reactjs代码中:
|                   <dd>                     {                       this.props.noCancel ? null : <a onClick={this.handleCancel}>{cancelTitle}</a>                     }                     {                       this.props.noConfrim ? null : <a onClick={this.handleConfirm}>{confirmTitle}</a>                     }                   </dd> | 
想要根据传入的noCancel noConfirm等参数,决定是否显示对应的按钮,
且如果没有传入该参数,则指定默认值
react js props mandatory
react js props mandatory default value
New in React v0.4: Prop Validation and Default Values – React Blog
reactjs – How to set component default props on React component – Stack Overflow
旧的写法好像是:
| AddAddressComponent.defaultProps = {   cityList: [],   provinceList: [], }; AddAddressComponent.propTypes = {   userInfo: React.PropTypes.object,   cityList: PropTypes.array.isRequired,   provinceList: PropTypes.array.isRequired, } | 
Reactjs 的 PropTypes 使用方法 « Jame’s Blog
react js props是否必须
react js props isRequired
英文:
Typechecking With PropTypes – React
或
Typechecking With PropTypes – React
中文:
结果发现上述写法,就是最新的。
【总结】
然后用如下写法即可:
| import { h, Component } from ‘preact’; import style from ‘./style.less’; import PropTypes from ‘prop-types’; export default class Notice extends Component {   constructor(props) {     super(props);     this.handleCancel = this.handleCancel.bind(this);     this.handleConfirm = this.handleConfirm.bind(this);     this.modalOverlayOnClick = this.modalOverlayOnClick.bind(this);     this.modalOnClick = this.modalOnClick.bind(this);     this.preventEventPropagation = this.preventEventPropagation.bind(this);     console.log(`Notice constructor: this.props.onCancel=${this.props.onCancel}, this.props.onConfirm=${this.props.onConfirm},this.props.noticeText=${this.props.noticeText}`);     this.noticeText = this.props.noticeText;     console.log(this.noticeText);   }   handleCancel(e) {     console.log(`handleCancel: this.props.onCancel=${this.props.onCancel}`);     // console.log(e);     this.preventEventPropagation(e);     if (this.props.onCancel) {       this.props.onCancel();     }   }   handleConfirm(e) {     console.log(`handleConfirm: this.props.onConfirm=${this.props.onConfirm}`);     // console.log(e);     this.preventEventPropagation(e);     if (this.props.onConfirm) {       this.props.onConfirm();     }   }   modalOverlayOnClick(e) {     console.log("modalOverlayOnClick");     this.hide(e);   }   modalOnClick(e){     console.log("modalOnClick");     this.preventEventPropagation(e);   }   hide(e){     console.log("hide");     if (this.props.hide) {       this.preventEventPropagation(e);       this.props.hide();     } else if (this.props.onCancel) {       this.props.onCancel();     }   }   preventEventPropagation(e){     console.log("preventEventPropagation");     e.stopPropagation();     e.nativeEvent.stopImmediatePropagation();   }                     //   <a onClick={this.handleCancel}>{cancelTitle}</a>                     // <a onClick={this.handleConfirm}>{confirmTitle}</a>   render () {     let cancelTitle = ‘取消’;     let confirmTitle = ‘确认’;     return (         this.props.visible ?         (           <div class={style.cd_popup_01} role="alert" onClick={this.modalOverlayOnClick}>             <div class={style.cd_popup_container} onClick={this.modalOnClick}>               <div class={style.fs_pup_div}>                 <dl>                   <dt>                     <h2>{this.noticeText}</h2>                   </dt>                   <dd>                     {                       this.props.noCancel ? null : <a onClick={this.handleCancel}>{cancelTitle}</a>                     }                     {                       this.props.noConfrim ? null : <a onClick={this.handleConfirm}>{confirmTitle}</a>                     }                   </dd>                 </dl>               </div>             </div>           </div>         )         :         (            null         )     );   } } Notice.PropTypes = {   visible : PropTypes.bool.isRequired,   onCancel : PropTypes.func,   onConfirm : PropTypes.func,   hide : PropTypes.func,   noCancel : PropTypes.bool,   noConfrim : PropTypes.bool,   noticeText : PropTypes.string }; Notice.defaultProps = {   visible : false,   noticeText : "提示",   noCancel : false,   noConfrim : false }; | 
转载请注明:在路上 » 【已解决】ReactJS中如何设置参数的是否必须和默认值