我正在学习react.js并尝试做这样的事情: 我有NumberBox组件和NumberLink子组件。
NumberBox有val
州。
NumberLink有val
属性。
当我点击NumberLink时,我想将NumberBox状态更改为链接的val
属性,但在控制台中我得到:
你能告诉我我做错了什么吗? 以下是代码:https://jsfiddle.net/ym58zcv4/1/未捕获的TypeError:this.props.onNumberLinkClick不是函数。
答案 0 :(得分:3)
您正在为undefined
道具传递onNumberLinkClick
。
使用Array.prototype.map()
的第二个参数在执行回调时提供this
值:
var numberLinks = this.props.data.map(function (number) {
return (
<NumberLink val={number} key={number} onNumberLinkClick={this.handleNumberLinkClick}/>
);
}, this)
工作小提琴:https://jsfiddle.net/ym58zcv4/3/
使用strict mode会将此类案例转换为运行时错误,以便更容易捕获。
您还可以使用ES6 arrow functions(通过启用React JSX转换器的this
模式或使用Babel来自动保留harmony
的当前值)作为你的发布者:
var numberLinks = this.props.data.map(number =>
<NumberLink val={number} key={number} onNumberLinkClick={this.handleNumberLinkClick}/>
)
答案 1 :(得分:1)
您还在handleNumberLinkClick
函数
this.setState({val:number})
应为this.setState({number:val})