未定義類型錯誤:無法讀取未定義的屬性“狀態”或“道具”因此,我開始將我的應用程序從ES 2015轉換為ES6,它使用了Reaction。我有一個家長班和一個孩子班,export default class Parent extends Component {
constructor(props) {
super(props);
this.state = {
code: ''
};
}
setCodeChange(newCode) {
this.setState({code: newCode});
}
login() {
if (this.state.code == "") {
// 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="code" onChange={this.handleCodeChange.bind(this)}/>
</div>
<button id="login" onClick={this.login.bind(this)}>
);
}}Child.propTypes = {
onCodeChange: React.PropTypes.func,
onLogin: React.PropTypes.func};但是,這會導致以下錯誤,狀態未定義它指的是,if (this.state.code == "") {
// Some functionality}知道是什么導致的嗎?
2 回答
MYYA
TA貢獻1868條經驗 獲得超4個贊
家長:
export default class Parent extends Component {
constructor(props) {
super(props);
this.state = {
code: ''
};
}
setCodeChange = (newCode) => {
this.setState({code: newCode});
}
login = () => {
if (this.state.code == "") {
// 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="code" onChange={this.handleCodeChange}/>
</div>
<button id="login" onClick={this.login}>
);
}}Child.propTypes = {
onCodeChange: React.PropTypes.func,
onLogin: React.PropTypes.func};<Child onCodeChange={this.setCodeChange.bind(this)} onLogin={this.login.bind(this)} />
家長:
constructor(props) {
super(props);
this.state = {
code: ''
};
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);}
汪汪一只貓
TA貢獻1898條經驗 獲得超8個贊
<Child onCodeChange={this.setCodeChange.bind(this)} onLogin={this.login.bind(this)} />constructor(props){
super(props);
this.login = this.login.bind(this);
this.setCodeChange = this.setCodeChange.bind(this);}<Child onCodeChange={this.setCodeChange} onLogin={this.login} />添加回答
舉報
0/150
提交
取消
