ReactJS - ' valueLink'不推荐使用`value`和`onChange`

时间:2016-05-03 15:36:27

标签: reactjs

我正在按照优秀的Wes Bos的教程学习ReactJS,但是我已经达成了关于2路数据绑定的部分,看来Wes教学的方法现在已被弃用。我现在需要尝试为下面的代码找到正确的方法,否则我将无法继续学习本教程..

好的,我所遇到的问题是" valueLink",控制台说我应该使用' value'和' onChange'在它的位置。任何人都可以帮我解决这个问题,似乎很多与反应有关的学习试图保持在所有被弃用的元素之上!

<input type="text" valueLink={linkState('fishes.' + key + '.name')}/>

3 个答案:

答案 0 :(得分:7)

  

好的,我所遇到的问题是&#34; valueLink&#34;,控制台说我应该使用&#39; value&#39;和&#39; onChange&#39;在它的位置。任何人都可以帮我解决这个问题,似乎很多与反应有关的学习试图保持在所有被弃用的元素之上!

Value Link是设计模式,Facebook不能弃用它。他们将从React核心中删除该模式的实现。阅读本文以获取有关模式的说明:

https://medium.com/@gaperton/managing-state-and-forms-with-react-part-1-12eacb647112#.5o63wmy72

  

与现代React没有简单/凌乱的双向数据绑定!

您不必使用其价值链接的实施(无论如何它都非常有限)。而且你也不必在任何地方写这些愚蠢的回调。这篇论文在文章中提出的方式更为强大。

https://www.npmjs.com/package/valuelink

答案 1 :(得分:1)

与现代React没有简单/凌乱的双向数据绑定!

控制台试图告诉您的是,您应该使用“value”属性来定义该输入的值,并使用“onChange”属性来定义将触发更改的函数。

所以,你有:

<input 
  type="text" 
  value={name} 
  onChange={(event) => { onNameChange(event.target.value)}}
/>

而onNameChange方法会导致您的“name”变量更改为输入的新值。

请注意,onNameChange方法将是您自己定义的内容,没有什么特别之处;它可以像你想的那样优雅或惹人喜欢。如今,您可能希望让它调度一个动作来更新应用程序状态的单一事实来源。看看Redux,你确实需要学习很多东西; - )

答案 2 :(得分:0)

是的,本教程适用于旧版本的ReactJS,因为ReactLink is deprecated.

建议您使用onChange事件处理程序来设置状态值:

<input type="text" name="name" onChange={ this.onInputChange.bind(this) } />

基本上,您必须创建一个名为onInputChange()的方法并在那里处理更改。

这仅供参考,最后,你应该参考一个较新的教程。我推荐this one.