我正在按照优秀的Wes Bos的教程学习ReactJS,但是我已经达成了关于2路数据绑定的部分,看来Wes教学的方法现在已被弃用。我现在需要尝试为下面的代码找到正确的方法,否则我将无法继续学习本教程..
好的,我所遇到的问题是" valueLink",控制台说我应该使用' value'和' onChange'在它的位置。任何人都可以帮我解决这个问题,似乎很多与反应有关的学习试图保持在所有被弃用的元素之上!
<input type="text" valueLink={linkState('fishes.' + key + '.name')}/>
答案 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没有简单/凌乱的双向数据绑定!
您不必使用其价值链接的实施(无论如何它都非常有限)。而且你也不必在任何地方写这些愚蠢的回调。这篇论文在文章中提出的方式更为强大。
答案 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.