在React.js中,用什么进行双向绑定,是props还是state?

4
我正在尝试使用Reactjs创建一个表单,并尝试使用双向绑定。但我无法在valueLink中使用props,因为它只能接受state。
问题1:我正在创建组件时传递属性,在getInitialState中将其设置为state,因为我不能在valueLink中使用props。有更好的方法吗?
我想要将文本框中的每个更改发送到服务器进行一些计算,并获得计算后的值放入state中。
问题2:我无法使用componentWillReceiveProps方法,因为我使用state。我也无法使用shouldComponentUpdate,因为我无法进行setState。在这种情况下我应该使用什么呢?
1个回答

3
valueLink在props上不起作用。您可能希望先尝试不使用双向绑定助手的React。该助手实际上只是方便的语法糖,而不是完整的库功能(因为React不需要双向绑定)。
对于问题1:这是一种反模式,这也是为什么您应该首先尝试不使用绑定助手的React的另一个原因。让prop保持为prop(在大多数情况下)。
对于问题2:这也是您决定使用绑定助手后变得更加困难的事情之一。至于“无法使用shouldComponentUpdate”,我不确定您的意思是什么。
似乎您的输入值由更高层次控制并作为prop传递。以下是没有插件的操作方法:http://jsfiddle.net/TcfWe/ 请注意,我将doSomeComputationOnServerSide放在父级中,因为它更符合与value源的真相的一致性。根据您的需求,您可能会将其放在子级中。

谢谢 chenglou!! 我正在构建一个页面,其中有200个行项目,每个行项目大约有15个可编辑字段,如果我为每个行项目的每个属性添加onChange事件,我感觉这可能会是一场噩梦。在React JS中,对于这种情况,有更好的方法吗?所谓的行项目是指每行本身都充当一个表单,任何属性的onchange事件都应该与服务器同步。 - Raghavan
1
我理解这种“噩梦般的感觉”;一开始我对于所有额外的打字也有类似的反应。然而,当你几周后回到你的组件时,如果你坚持使用React鼓励你使用的propsstate,数据流会更加明显。 - Ross Allen
1
就像@ssorallen所说,React更喜欢明确而不是神奇。当您在几周后回来时,您不会因为额外的打字而感到困扰。话虽如此,您肯定可以这样做:http://jsfiddle.net/chenglou/TcfWe/1/ - chenglou

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接