state 和 props 主要的区别在于 props 是不可变的,而 state 可以根据与用户交互来改变。这就是为什么有些容器组件需要定义 state 来更新和修改数据。 而子组件只能通过 props 来传递数据。 props 组件之间的通信 props用于定义外部接口,state用于记录内部状态 props的赋值在于外部世界使用组件,state的赋值在于组件内部 组件不应该改变props的值,而state存在的目的就是让组件来修改的 class WebSite extends React.Component { constructor() { super(); this.state = { name: "菜鸟教程", site: "https://www.runoob.com" } } render() { return ( <div> <Name name={this.state.name} /> <Link site={this.state.site} /> </div> ); } } class Name extends React.Component { render() { return ( <h1>{this.props.name}</h1> ); } } class Link extends React.Component { render() { return ( <a href={this.props.site}> {this.props.site} </a> ); } } 1,子组件调用父组件的方法 (1)子组件要拿到父组件的属性,需要通过 this.props 方法。 (2)同样地,如果子组件想要调用父组件的方法,只需父组件把要被调用的方法以属性的方式放在子组件上, 子组件内部便可以通过“this.props.被调用的方法”这样的方式来获取父组件传过来的方法。 Parent组件 Child组件 onchange="{this.props.handleEmail}/" 2,父组件调用子组件的方法 在 ReactJS 中有个叫 ref 的属性。这个属性就像给组件起个引用名字一样,子组件被设置为 ref 之后(比如 ref=“xxx”)。父组件便可以通过 this.refs.xxx 来获取到子组件了。 父组件 this.refs.getSwordButton.sendSword(); constructor(props) { // 调用父类(Component)的构造函数 super(props) }
if(this.refs.ExperimentTitleaa.state.value == undefined){ message.error("请输入名称"); return; }else if(this.refs.ExperimentDescribedaa.state.value == undefined){ message.error("请输入描述"); return; }else if(this.refs.dataMartaa.state.value == undefined){ message.error("请输入测试地址"); return; }else if(this.refs.ScoringProgramImageaa.state.value == undefined){ message.error("请输入训练地址"); return; }else{ this.setState({ visible: false, }); } this.refs.ExperimentTitleaa.state.value = undefined this.refs.ExperimentDescribedaa.state.value = undefined this.refs.dataMartaa.state.value = undefined this.refs.ScoringProgramImageaa.state.value = undefined if(this.refs.ExperimentTitleaa || this.refs.ExperimentDescribedaa || this.refs.dataMartaa || this.refs.ScoringProgramImageaa){ this.refs.ExperimentTitleaa.state.value = undefined this.refs.ExperimentDescribedaa.state.value = undefined this.refs.dataMartaa.state.value = undefined this.refs.ScoringProgramImageaa.state.value = undefined } --------------------------------------------------------------------------------------------- if (this.refs.pytorchjobsMasterfuben.props.value ==null) { pytorchjobs } else if (this.state.workerFusz == null || this.refs.pytorchjobsWorkerfuben.props.value == "") { }