Uncaught TypeError:无法读取未定义的属性“状态或道具”

Uncaught TypeError:无法读取未定义的属性“状态或道具”,第1张

Uncaught TypeError:无法读取未定义的属性“状态或道具”

您可以使用箭头功能绑定您的功能。您需要在子组件和父组件中都绑定功能。

上级:

export default class Parent extends Component {    constructor(props) {        super(props);        this.state = { pre: ''        };    }    setCodeChange = (newCode) => {        this.setState({pre: newCode});    }    login = () => {        if (this.state.pre == "") { // Some functionality        }    }    render() {        return ( <div>     <Child onCodeChange={this.setCodeChange} onLogin={this.login} /> </div>        );    }}

儿童

export default class Child extends Component {    constructor(props) {        super(props);    }    handleCodeChange = (e) => {        this.props.onCodeChange(e.target.value);    }    login = () => {        this.props.onLogin();    }    render() {        return ( <div>     <input name="pre" onChange={this.handleCodeChange}/> </div> <button id="login" onClick={this.login}>        );    }}Child.propTypes = {    onCodeChange: React.PropTypes.func,    onLogin: React.PropTypes.func};

还有其他绑定功能的方法,例如您正在使用的一种,但您也需要对父组件进行绑定,例如

<ChildonCodeChange={this.setCodeChange.bind(this)} onLogin={this.login.bind(this)}/>

或者您可以在构造函数中指定绑定为

上级:

constructor(props) {    super(props);    this.state = {        pre: ''    }; this.setCodeChange = this.setCodeChange.bind(this); this.login = this.login.bind(this);}

儿童

constructor(props) {    super(props);    this.handleCodeChange = this.handleCodeChange.bind(this);    this.login = this.login.bind(this);}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5001807.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-14
下一篇2022-11-14

发表评论

登录后才能评论

评论列表(0条)

    保存