我知道如果你想改变一个组件本身你使用状态的东西,并且当emit是外部的那么你使用props来接收它。但今天我难以理解这个例子
var Label = React.createClass({
handleClick: function(){
console.log("Click");
this.props.children = "Text After Click";
this.setState({liked: false});
},
render: function () {
console.log("Render");
return (
<p ref="p" onClick={this.handleClick}>{this.props.children}</p>
);
}
});
使用道具而不是状态来更改文本按钮的值。我现在很困惑。指向来源的链接位于http://myshareoftech.com/2013/12/unit-testing-react-dot-js-with-jasmine-and-karma.html
答案 0 :(得分:0)
我不知道源代码,但是当我尝试上面的代码时,它会抛出此错误:
未捕获的TypeError:无法分配给对象#
<Object>
的只读属性“子”。
它应该不起作用,因为道具的基本属性是DOC:
道具是只读的,无论是将组件声明为函数还是类,它都不能修改自己的道具。所有React组件必须像它们的道具一样充当纯函数。
检查fiddle
是否有错误:https://jsfiddle.net/pjnp6yza/
参考:https://facebook.github.io/react/docs/components-and-props.html#props-are-read-only