React.cloneElement出现意外行为

时间:2015-09-25 15:14:09

标签: reactjs

myVar = this.state.value;
console.log(myVar); //some string e.g "my string"
console.log(typeof myVar); // string 
var test = " string part";
passString = test + myVar;
console.log(passString); //string part my string 
clonedChild = React.cloneElement(child, {newProp: myVar})

在克隆的孩子身上,我看到了newProp,但它是"字符串partnull"

它必须是某种范围问题...

更新:

这是实际的JavaScript代码;

(configDataX = this.state, console.log("In App Component. Rendering with state", configDataX), newChildren = React.Children.map(this.props.children, (function(_this) {
            return function(child) {
              return React.cloneElement(child, {
                foobx: true,
                appData: configDataX
              });
            };
})(this))));

这是由fluxxor emit("更改")事件引发的。这是在Ajax请求的成功回调中引发的。 StoreWatchMixin正确地听到此事件并将获得的值设置为组件的状态。状态更改和渲染发生。上面的代码在render()方法中。 configDataX的console.log显示我们已经从Ajax调用中获取了值并将它们设置为状态。调试到map函数configDataX仍然是正确的。但是克隆的子节点上的值不是在Ajax请求中设置的值 - 它是在Ajax请求之前设置到存储中的值。

就像使用的状态值是Ajax请求之前的状态值。我是否可以在封闭中使用该状态?但是为什么当我调试它时,我会在configDataX上看到Ajax请求之后的值吗?

我完全失败了。

0 个答案:

没有答案