// 希望实现如下的 useMiddleware 函数, 尝试了一下, 发现有点费劲
// 尝试性翻看 react-use, 果然有相似的实现: https://github.com/streamich/react-use/blob/master/docs/useMediatedState.md
// 感觉已经很合用了, 但是好像如下这样的调用方式, 更好看, 更灵活
// 见多识广的大佬能指点一下哪儿是否有类似的实现吗?
// 或者指出我这样调用的弊端?
// 如果实在没有, 可能就得参考 react-use, 硬着头皮自己写了
// 提前感谢大佬们
export function Foo() {
const [number, setNumber] = useState(1)
// 这儿能通过类似于中间件那样的语法链式调用, 扩展 setNumber 函数
const newSetNumber = useMiddleware(setNumber).use((val) => val * 2).use((val) => val - 1).value
return <button onClick={() => newSetNumber((val) => val + 5)}>
{number}
</button>
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.