Document useDispatcher pattern
未关闭
还没有人认领这个 Issue。
- 主要语言
- JavaScript
- 星标
- 11.8k
- 派生
- 7.9k
- 平均合并
- 1 天 11 小时
- 30 天内合并 PR
- 11
描述
To mimic (easily testable) behaviour similar to redux thunk, a pattern such as useDispatcher can be used:
import React, { useReducer } from "react";
import ReactDOM from "react-dom";
import "./styles.css";
function App(props) {
var { state, click } = useStore();
return (
<div>
<h1>State: {state}</h1>
<button onClick={click}>Increment</button>
</div>
);
}
function useStore(props) {
var [ state, dispatch ] = useReducer(reducer, []);
var { click } = useDispatcher(dispatch, props);
return {
state,
click
};
}
function useDispatcher(dispatch, props) {
function click() {
dispatch({ type: 'click' });
setTimeout(() => afterclick(), 2000);
}
function afterclick() {
dispatch({ type: 'afterclick' });
}
return { click };
}
function reducer(state, { type, dispatch }) {
switch (type) {
case "click":
return [...state, "click wait 2s..."];
case "afterclick":
return [...state, "....after"];
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
Documenting this pattern may also help to ensure this is an optimised approach, or whether another solution is preferable.
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
从 issue 中的 useDispatcher 示例开始,检查 React 文档的结构,以确定可以在哪里记录这一模式。将其与类似 redux-thunk 的行为进行比较,并决定该模式是否经过优化,或者是否更适合采用另一种解决方案;完成的标准是文档清楚地解释了该建议。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- javascript, react
- 领域
- documentation
- Issue 类型
- 文档
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 活跃度
- 停滞
- 描述清晰度
- 需要澄清
- 新手友好度
- 25/100