Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应设置状态和通量动作更新_Javascript_Reactjs_Reactjs Flux - Fatal编程技术网

Javascript 反应设置状态和通量动作更新

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

我需要一个单击函数来通过flux操作更新存储,并更新组件的状态

例如: 我有一个表单字段,其中包含一个故事的数据,还有一个状态,用于说明带有表单的模态是否打开

// 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)//Is
story.update()
引发异常?不。一切正常。重新加载页面后,它拥有所有最新更新。Is
story.update()
引发异常?不。一切正常。重新加载页面后,它拥有所有最新更新。谢谢,但我实际上使用的是React.createClass()谢谢,但我实际上使用的是React.createClass()