Javascript 反应设置状态和通量动作更新
我需要一个单击函数来通过flux操作更新存储,并更新组件的状态 例如: 我有一个表单字段,其中包含一个故事的数据,还有一个状态,用于说明带有表单的模态是否打开Javascript 反应设置状态和通量动作更新,javascript,reactjs,reactjs-flux,Javascript,Reactjs,Reactjs Flux,我需要一个单击函数来通过flux操作更新存储,并更新组件的状态 例如: 我有一个表单字段,其中包含一个故事的数据,还有一个状态,用于说明带有表单的模态是否打开 // Initial state return { story: this.props.story, modalIsOpen: true } -- //单击函数关闭模式对话框 关闭模式:功能(e){ e、 预防默认值(); story.update(newStory)//在您的story.update()之后不应该需要t
// Initial state
return {
story: this.props.story,
modalIsOpen: true
}
--
//单击函数关闭模式对话框
关闭模式:功能(e){
e、 预防默认值();
story.update(newStory)//在您的story.update()之后不应该需要this.setState()
可能在操作调用之后,组件在执行this.setState()
之前会重新呈现。
流程应为:
- 您的组件调用
story.update()
- 存储侦听调度程序和更新
- 商店散发变化
- 您的组件将侦听更改
- 组件内部响应存储更新的方法不执行
setState({modalIsOpen:false})
另外,您的故事
似乎不需要处于状态:您的组件只需呈现this.props.story您不应该在故事.update()之后需要this.setState()
可能在操作调用之后,组件在执行this.setState()
之前会重新呈现。
流程应为:
- 您的组件调用
story.update()
- 存储侦听调度程序和更新
- 商店散发变化
- 您的组件将侦听更改
- 组件内部响应存储更新的方法不执行
setState({modalIsOpen:false})
另外,您的故事
似乎不需要处于状态:如果您使用ES2015类来创建React组件(而不是React.createClass()
),您的组件只需呈现this.props.story)您可能会忘记将事件处理程序方法绑定到组件的上下文。有几种方法可以轻松完成此操作,下面是一个很好的教程:
我更喜欢使用。有了它,您应该将您的组件修复为:
import autobind from "autobind-decorator";
class Foo extends React.Component {
/* ... */
@autobind
closeModal: function(e){
e.preventDefault();
story.update(newStory) // <== Flux action to update the story, which then updates this component
this.setState({modalIsOpen: false}) // <== To actually close the modal
}
}
从“自动绑定装饰器”导入自动绑定;
类Foo扩展了React.Component{
/* ... */
@自动绑定
关闭模式:功能(e){
e、 预防默认值();
story.update(newStory)//如果您使用ES2015类来创建React组件(而不是React.createClass()
),您可能会忘记将事件处理程序方法绑定到组件的上下文。有几种方法可以轻松实现,下面是一个很好的教程:
我更喜欢使用。有了它,您应该将您的组件修复为:
import autobind from "autobind-decorator";
class Foo extends React.Component {
/* ... */
@autobind
closeModal: function(e){
e.preventDefault();
story.update(newStory) // <== Flux action to update the story, which then updates this component
this.setState({modalIsOpen: false}) // <== To actually close the modal
}
}
从“自动绑定装饰器”导入自动绑定;
类Foo扩展了React.Component{
/* ... */
@自动绑定
关闭模式:功能(e){
e、 预防默认值();
story.update(newStory)//Isstory.update()
引发异常?不。一切正常。重新加载页面后,它拥有所有最新更新。Isstory.update()
引发异常?不。一切正常。重新加载页面后,它拥有所有最新更新。谢谢,但我实际上使用的是React.createClass()谢谢,但我实际上使用的是React.createClass()