为什么React组件功能会失去其属性?

时间:2016-03-01 19:03:54

标签: reactjs

因此,在以下示例中,为什么单击按钮时log.added未定义?

var log = function(){
  console.log("X");
};

log.added = true;

App = React.createClass({
  log: log,
  showLog(){
    this.log(); // X
    console.log(this.log.added); // undefined
  },
  render(){return (
    <button onClick={this.showLog}>Log</button>
  )}
});

1 个答案:

答案 0 :(得分:1)

每当函数反弹时都会发生这种情况,这就是React的createClass函数所做的事情。如果您想查看,请参阅源代码的相关部分:https://github.com/facebook/react/blob/master/src/isomorphic/classic/class/ReactClass.js#L488

但是,我们可以在控制台中轻松地重现此行为:

function x () {}
x.prop = 'foo'
var o = { x: x }
o.x.prop // "foo"
var y = o.x
y.prop // "foo"
var z = o.x.bind(o)
z.prop // undefined <-- rebound prop no longer exists!

如果您因为代码中存在问题而提问,我确定有很多解决方法。