如何使用 Flux 中呈现的 DOM 元素的详细信息调用 actioncreator?

How do I call an actioncreator with details of the rendered DOM element in Flux?

我的用例:

有:

  1. 当用户在字段中键入时
  2. 当浏览器宽度改变时
  3. 关于最初的创作

我有 1 和 2 在工作。但是我不知道如何在初始创建时调用动作创建器?

我尝试在 componentDidUpdate 中调用它,但它抛出一个错误,说它正在调度中。

有什么想法吗?还是我处理错了?

干杯

使用 componentDidUpdate 或其他生命周期事件将导致该错误,因为 Facebook 的 Flux 实现不希望操作导致另一个操作被触发(我假设有一个操作导致您的组件更新) .所以基本上你需要在另一个 运行 循环中触发动作。

当您的编辑器初始化时,您是否可以使用回调?例如,如果您使用的是 Quill(虽然我自己从未使用过,也没有测试过此方法),我找不到用于初始化的回调,但我猜您正在设置初始化内容您可以收听一个事件:text-change(在此处找到:http://quilljs.com/docs/events/#text-change

editor.on('text-change', function(delta, source) {
  if (source == 'api') { // Maybe you want to dispatch action only when set through API
    Actions.updateEditorHeight(...);
  }
});

另一个我只会作为最后手段使用的 hacky 解决方案,因为可能有更好的解决方案是在组件的生命周期事件之一中使用 setTimeout。例如:

componentDidMount() {
  // init editor, perhaps load saved data
  setTimeout(function() {
    Actions.updateEditorHeight(...);
  }, 0);
}