Javascript render方法中的bind()给了我一个警告?
我的代码工作正常,但它给了我一个警告 警告:bind():您正在将组件方法绑定到组件。React以高性能方式自动为您执行此操作,因此您可以安全地删除此呼叫 我还使用onClick={this.myFun.bind(null,“myvalue”)},如 但它还是给了我警告 我的代码:Javascript render方法中的bind()给了我一个警告?,javascript,reactjs,Javascript,Reactjs,我的代码工作正常,但它给了我一个警告 警告:bind():您正在将组件方法绑定到组件。React以高性能方式自动为您执行此操作,因此您可以安全地删除此呼叫 我还使用onClick={this.myFun.bind(null,“myvalue”)},如 但它还是给了我警告 我的代码: var MyClass = React.createClass({ myFun : function (value){ console.log(value); }, render: f
var MyClass = React.createClass({
myFun : function (value){
console.log(value);
},
render: function () {
var that = this;
var card = this.props.data.map(function (val,key) {
return (
<p onClick={that.myFun.bind(null,val)}> Click Me</p>
);
});
return (
<div>
{card}
</div>
);
}
});
var MyClass=React.createClass({
myFun:函数(值){
console.log(值);
},
渲染:函数(){
var=这个;
var card=this.props.data.map(函数(val,key){
返回(
单击我
);
});
报税表(
{card}
);
}
});
您唯一错过的是将分配给此
var myClass = React.createClass({
myFun : function (value){
console.log(value);
},
render: function () {
var that = this;
var card = this.props.data.map(function (val,key) {
return <p onClick={that.myFun.bind(null,val)}> Click Me</p>;
});
return <div>{card}</div>;
}
});
var myClass=React.createClass({
myFun:函数(值){
console.log(值);
},
渲染:函数(){
var=这个;
var card=this.props.data.map(函数(val,key){
return单击我
;
});
返回{card};
}
});
您的代码有一些问题
render:function(){
var this=that;
应该是
render:function(){
var=this;
return({card})
将给出一个错误,您可能返回了未定义的、空的或对象
,因此您需要将其包装在一个div中,如{card}
,以返回一个React元素
组件名称必须以大写字符开头。请参见此处的说明:
查看工作演示
var MyClass=React.createClass({
myFun:函数(值){
console.log(值);
},
渲染:函数(){
var=这个;
var card=this.props.data.map(函数(val,key){
返回(
单击我
);
});
返回(
{card}
);
}
});
ReactDOM.render(,document.getElementById('app'))
最好的方法是将其提取到子组件中,并将参数作为道具传递。这样,您就不会在每次渲染时都创建新函数,并且可以防止不必要的重新渲染(:
var Item=React.createClass({
handleClick:function(){
this.props.onItemClick(this.props.val);
},
render:function(){
返回(
单击我
);
}
});
var MyClass=React.createClass({
myFun:函数(值){
console.log(值);
},
渲染:函数(){
var=这个;
var card=this.props.data.map(函数(val,key){
返回(
);
});
返回(
{card}
);
}
});
ReactDOM.render(
,
document.getElementById('test')
);
你为什么要这样做?反应清楚地说清楚我没有将此传递给绑定函数。你确定这有效吗:var this=that
?@Muhaimin抱歉,这是var that=this;你收到此警告是因为myFun
已经绑定。你可以改为
。“将给出一个错误,因为卡可能未定义或为空”不,不会。它实际上是对象速记符号,与{card:card}相同
。当然,这是行不通的,因为render
应该返回一个react元素,而不是一个对象。因此,这是错误的,但不是因为你提到的原因。虽然你对所有这些事情都是对的,但你仍然没有解决OP提出的问题。@Shubham Khatri,很抱歉这个愚蠢的错误,但我已经尝试过你的建议了stion。但它对我不起作用。它仍然给我一个警告。@FelixKling我在回答中忽略了这一点。谢谢你提醒我不能这样做,因为我对其他函数也使用了太多绑定。所以我不能为所有这些创建类。