强制更新是否像我认为的那样工作
Does forceUpdate not work like I think it does?
以我在这里创建的非常简单的 react.js 应用程序为例
<main></main>
<section>
<input value="abc" />
</section>
..
data = note: ""
setNote = -> data.note = $('input').val()
display = React.createFactory React.createClass render: ->
React.DOM.div null, "The note is:", @props.note
setNote()
rootComponent = React.render display(data), document.querySelector('main')
$('input').on 'keyup', ->
setNote()
rootComponent.forceUpdate()
根据我对文档的理解,当我键入输入时,它应该设置data.note
(我已经验证了它确实如此),并且由于display
的render
方法使用 note
属性,调用rootComponent.forceUpdate
应该强制显示以重新呈现和镜像输入中的文本。
但是它仍然只显示data.note
的原始值。我是否误解了文档?
请注意,我知道通常这是您可能会使用助焊剂或回流的那种东西,虽然我很欣赏任何指向这些教程的好教程的链接,但这是一次性的,我试图在这里接近金属。
你要找的是setProps。这会将更新的数据传递给组件并触发重新渲染。
尝试:
$('input').on 'keyup', ->
setNote()
rootComponent.setProps(data)
React 不能通过引用传递数据,这意味着当你的data
变量更新时,组件会保留传递给它的原始实现。
编辑:要回答您将使用forceUpdate
做什么的问题,请考虑以下更改的示例:
data = note: ""
setNote = -> data.note = $('input').val()
display = React.createFactory React.createClass render: ->
React.DOM.div null, "The note is:", data.note
setNote()
rootComponent = React.render (display()), document.querySelector('main')
$('input').on 'keyup', ->
setNote()
rootComponent.forceUpdate()
现在请注意,数据不是传递到组件,而是全局引用。 当您的 render 方法包含来自 React 范围之外的数据时,应该使用forceUpdate
,并且何时需要重新渲染组件的决定被推迟到外部源。
相关文章:
- AJAX更新面板不;t工作.请帮我找出我错在哪里.
- 更新属性工作不正常Meteor/MongoDB
- 无法使“更新”面板正常工作
- Chrome地理定位在更新后停止工作
- 更新Wordpress和我的平滑滚动停止工作
- HTML文件中的智能Javascript建议在Visual Studio代码更新后没有日志程序工作
- 为什么在ASP.NET Ajax更新面板中执行任何操作后javascript元素都停止工作
- 虚拟键盘在更新到 Chrome v50 后不再工作
- MYSQL更新没有'我不能始终如一地工作
- visualstudio2013更新4-javascript highlithning停止工作
- 为什么在Firefox更新之后JQuery不能在我的MVC 4应用程序中工作
- jQuery日期选择器在Firefox和IE的MVC部分视图上进行ajax更新后无法工作
- Jquery将在asp.net 3层的更新面板“不工作”中重新加载
- 在jQuery.html()更新时,其他函数将停止工作
- 强制更新是否像我认为的那样工作
- 如何在脱机工作时将数据写入和更新 HTML5 缓存的网页
- JQuery 数据表列数据更新工作太慢
- AngularJS选择的插件,选择:更新不起作用,在浏览器中工作
- 更新的网址无法正常工作
- 由于字体来自printing.com,Spiderable包偶尔会工作[更新]