React JS - uncatch TypeError:无法读取未定义的属性“绑定”
React JS - Uncaught TypeError: Cannot read property 'bind' of undefined
我想在用户单击组件并隐藏SelectedTopicPage
组件时显示TopicsList
组件SingleTopicBox
。但是,我收到错误:主题列表.jsx 文件Uncaught TypeError: Cannot read property 'bind' of undefined
。
主控制器.jsx
import {React, ReactDOM} from '../../../build/react';
import TopicsList from '../topic-list.jsx';
import SelectedTopicPage from '../selected-topic-page.jsx';
import topicPages from '../../content/json/topic-pages.js';
export default class MainController extends React.Component {
state = {
isTopicClicked: false,
topicPages
};
onClick(topicID) {
this.setState({isTopicClicked: true});
this.setState({topicsID: topicID});
};
render() {
return (
<div className="row">
{this.state.isTopicClicked
? <SelectedTopicPage topicsID={this.state.topicsID} key={this.state.topicsID} topicPages={topicPages}/>
: <TopicsList/>}
</div>
);
}
};
主题列表.jsx
import {React, ReactDOM} from '../../build/react';
import SingleTopicBox from './single-topic-box.jsx';
import SelectedTopicPage from './selected-topic-page.jsx';
import topicPages from '../content/json/topic-pages.js';
export default class TopicsList extends React.Component {
onClick(){
this.props.onClick.bind(null, this.topicID);
},
render() {
return (
<div className="row topic-list">
<SingleTopicBox topicID="1" onClick={this.onClick} label="Topic"/>
<SingleTopicBox topicID="2" onClick={this.onClick} label="Topic"/>
<SingleTopicBox topicID="3" onClick={this.onClick} label="Topic"/>
<SingleTopicBox topicID="4" onClick={this.onClick} label="Topic"/>
</div>
);
}
};
single-topic-box.jsx
import {React, ReactDOM} from '../../build/react';
export default class SingleTopicBox extends React.Component {
render() {
return (
<div>
<div className="col-sm-2">
<div className="single-topic" data-topic-id={this.props.topicID}>
{this.props.label} {this.props.topicID}
</div>
</div>
</div>
);
}
};
你有几个错误
-
您应该将
onClick
传递给TopicsList
render() { return ( <div className="row"> {this.state.isTopicClicked ? <SelectedTopicPage topicsID={this.state.topicsID} key={this.state.topicsID} topicPages={topicPages} /> : <TopicsList onClick={ this.onClick.bind(this) } />} </div> ); }
-
从
TopicsList
中删除onClick
方法onClick() { // ... },
-
从
props
传递onClick
回调<SingleTopicBox topicID="1" onClick={this.props.onClick} label="Topic"/>
-
添加到
SingleTopicBox
onClick
事件<div className="single-topic" data-topic-id={this.props.topicID} onClick={ () => this.props.onClick(this.props.topicID) } > {this.props.label} {this.props.topicID} </div>
-
您不需要两次呼叫
setState
onClick(topicID) { this.setState({ isTopicClicked: true, topicsID: topicID }); }
Example
相关文章:
- 将对象作为参数传递后的未定义属性
- 检查链接对象形式中未定义属性的最佳实践是什么
- PhantomJS中的evalute内部未定义属性
- 访问数字类型的未定义属性
- 如何处理未定义属性的未定义属性 javascript 类型错误
- 返回未定义属性的脚本
- 类型错误:无法读取 ng-repeat 的未定义属性
- JavaScript-Disqus如何处理其“;disqus_config”;包含未定义属性的函数
- 是对HTMLElement#样式的未定义属性的赋值的返回值,保证与赋值相同
- 最好检查未定义属性或设置为空
- 如何解决这个未定义属性的node.js错误?
- 如何在JavaScript中挽救对象的未定义属性?
- AngularJS和PHP -注意:未定义属性:stdClass
- 主干模型删除未定义属性
- if else子句中未定义对象的未定义属性
- Javascript数组问题:无法读取未定义属性
- 当尝试使用未定义属性进行筛选时,Lodash将排除项
- 在Javascript数组的中途未定义属性
- Knockout arrayForEach未定义属性
- javascript中未定义属性的简写,初始化和赋值属性