Javascript render方法中的bind()给了我一个警告?

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

我的代码工作正常,但它给了我一个警告

警告:bind():您正在将组件方法绑定到组件。React以高性能方式自动为您执行此操作,因此您可以安全地删除此呼叫

我还使用onClick={this.myFun.bind(null,“myvalue”)},如

但它还是给了我警告

我的代码:

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我在回答中忽略了这一点。谢谢你提醒我不能这样做,因为我对其他函数也使用了太多绑定。所以我不能为所有这些创建类。