简介
reducer-chain
是一个用于创建 reducer 处理函数链的 npm 包。它可以让你更加灵活地组织 reducer 处理函数,让代码更加清晰、简洁。
安装
可以通过 npm 安装 reducer-chain
包:
npm install reducer-chain
使用
使用 reducer-chain
,你需要创建一个处理函数链。然后,将这个处理函数链作为参数传递给 createReducer
函数,它会返回一个新的 reducer 处理函数。
-- -------------------- ---- ------- ------ - -------------- ----- - ---- ---------------- ----- ------------ - - ------ - -- ----- --- - ------- -------- -- - ------ - --------- ------ ----------- - ------- -- -- ----- -------- - ------- -------- -- - ------ - --------- ------ ----------- - ------- -- -- ----- ------- - --------------------------- ---------- -----------
在上面的例子中,chain
函数将 add
和 multiply
两个处理函数链接在一起,形成了一个处理函数链。当 reducer 接收到一个 action 时,会依次调用 add
和 multiply
处理函数,并将它们的返回值传递给下一个处理函数。
高级用法
reducer-chain
还提供了一些高级用法,可以让你更加灵活地组织处理函数链。
处理函数链参数
处理函数链中的每个处理函数都可以接受两个参数:state
和 payload
。state
表示当前的状态,payload
表示 action 的负载。
const add = (state, payload) => { return { ...state, count: state.count + payload }; };
在上面的例子中,add
处理函数接受两个参数,将 state.count
加上 payload
,并返回一个新的 state。
next
函数
如果需要在处理函数中让 reducer 跳过后面的部分处理函数,可以使用 next
函数。next
函数接受一个参数,表示要跳过的处理函数的数量。
-- -------------------- ---- ------- ----- ------------------ - ------- -------- ----- -- - ----- -------- - ---------- --------- -- --------------- - --- - -- -- ----- -- --------------- ------ --------- - ---- - -- -------------- ------ ------- --------- --------- - --
在上面的例子中,如果 newState.count
大于 10,就直接返回 newState
,并跳过后面的部分处理函数。如果不大于 10,就通过 next
函数,执行后面的一个处理函数。
跳过指定的处理函数
有时候,我们需要在处理函数中跳过指定的处理函数,而不是跳过后面的所有处理函数。这时可以使用 skip
函数。
-- -------------------- ---- ------- ----- ------------------ - ------- -------- ----- ----- -- - ----- -------- - ---------- --------- -- --------------- - --- - -- -- ----- -- ------ -------- ---- ------ -------------- --------- --------- - ---- - -- -------------- ------ ------- --------- --------- - --
在上面的例子中,如果 newState.count
大于 10,就通过 skip
函数,跳过 multiply
处理函数。如果不大于 10,就通过 next
函数,执行后面的一个处理函数。
示例
-- -------------------- ---- ------- ------ - -------------- ----- - ---- ---------------- ----- ------------ - - ------ - -- ----- --- - ------- -------- -- - ------ - --------- ------ ----------- - ------- -- -- ----- -------- - ------- -------- -- - ------ - --------- ------ ----------- - ------- -- -- ----- -------------- - ------- -------- ----- -- - ------ ------- ---------- ------- - --- --------- -- ----- ------------------ - ------- -------- ----- ----- -- - ----- -------- - ---------- --------- -- --------------- - --- - ------ -------------- --------- --------- - ---- - ------ ------- --------- --------- - -- ----- ------- - -------------- ------------- --------------------- ------------------- --------- -- --------------------------------- - ----- ------ -------- - ---- -- - ------ -- - --------------------------------- - ----- ------ -------- - ---- -- - ------ - - --------------------------------- - ----- ------ -------- - ---- -- - ------ -- -
在上面的例子中,我们定义了 addAndMultiply
和 addAndSkipMultiply
两个处理函数,它们分别演示了在处理函数中使用 next
和 skip
的用法。然后,我们使用 chain
函数将它们连接起来,形成了一个可以处理三个 action 的 reducer 处理函数。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60067008e361a36e0bce8b5c