我已经阅读了很多有关此问题的帖子,有些this.setState
是异步调用,所以每次都不会重新渲染。如何根据以下上下文解决此问题:
getInitialState: () ->
return {
page: ""
}
choose: (event) ->
console.log(@props.id) # This is the correct id that I want to pass into state
@setState({
page: @props.id # @state.page isn't being set to @props.id
})
render: () ->
return (
<button onClick={@choose}>Click me</button>
)
我已尝试bind
on onClick={@choose.bind(@)}
onClick调用,但似乎React已自动执行此操作。单击按钮后,如何在choose()
中正确设置状态?
解决方案:这是调用父组件的子组件,因此state
在那里的某个地方丢失了。我所要做的就是从父组件调用传递id
作为道具并通过那里访问它。
答案 0 :(得分:3)
您的代码似乎正确无误。 let TabImages = [UIImage]()
let HighlightedImages = [UIImage]()
不保证是同步的,它的执行可能会延迟。这意味着如果您尝试在代码中setState
之后立即访问@state.name
,那么您将获得旧值
@setState
所以你应该使用choose: (event) ->
console.log(@props.id) # This is the correct id that I want to pass into state
@setState({
page: @props.id # @state.page isn't being set to @props.id
})
console.log(@state.name) # here's old value
的第二个参数,这是一个回调函数,它将在更新状态后立即被调用,所以
@setState