是否可以绑定到getInitialState()
?
BidLists = React.createClass({
getInitialState: function(s) {
return{
filteredID: this.props.data,
currentData: s
}
},
renderBidContent: function(s) {
return(
<div>{s.support_title}</div>
);
},
render: function() {
var cards = this.props.data.slice(0,25).map( (s, i) => {
return (
<div>
{this.getInitialState.bind(this,s)} // is this even possible?
</div>
);
});
var currentData = this.state.currentData;
return(
<div>{this.renderBidContent(currentData)}</div>
);
}
});
module.exports = BidLists;
我得到了:
无法读取属性&#39; support_title&#39;未定义的
我似乎没有正确绑定s
。有帮助吗?我使用的是React v0.14
背后的原因:
在renderBidContent()
中会有另一个函数循环。该循环将针对s.id
进行测试。我可以在BidList的render()
中实现这一点,但输出是两次,我不希望这样。
我尝试做某事like this但没有点击方法。
答案 0 :(得分:0)
你不能这样做,这不是绑定如何工作。
也许你正在寻找类似的东西
BidLists = React.createClass({
getInitialState: function(s) {
return{
filteredID: this.props.data
}
},
renderBidContent: function(s) {
return(
<div>{s.support_title}</div>
);
},
render: function() {
return this.props.data.slice(0,25).map( (s, i) => {
return <div>{this.renderBidContent(s)}</div>
});
}
});
绑定实际上并不绑定旧函数。它创建一个新函数并将上下文或变量绑定到它。绑定的工作方式类似于currying。
考虑这个功能
function multiply(x, y){
return x * y
}
现在说我想使用上面的函数创建一个multiplyTwo函数(我们也可以创建自己的函数但是假装乘法是一个非常复杂的函数)。
方法1,currying / closure。
function multiplyAny(num) {
return function(y){
return multiply(num, y);
}
}
var multiplyTwo = multiplyAny(2);
multiplyTwo(5); //this should give you 10
方法2绑定
var multiplyTwo = multiply.bind(null, 2);
multiplyTwo(5); //this should give you 10
bind就像一种特殊的咖喱,并创建了一个已经设置了一些变量的新函数。第一个变量是上下文(a.k.a this keyword)