我正在查看this article的redux的超級基本實現的示例。我瞭解它,除非派遣使用prevState
。首先,這個函數從哪裏獲得prevState?這與計數器需要的實際狀態有什麼關係?它是否隱式地在名爲prevState的狀態中設置了另一個值?我只是很難理解狀態是如何傳遞給dispatch,然後通過prevState反轉的。我認爲這可能是一個函數式編程思想,我還沒有掌握。謝謝你幫助我理解!瞭解Redux |的基本實現prevState如何使用?
import React, { Component } from 'react';
const counter = (state = { value: 0 }, action) => {
switch (action.type) {
case 'INCREMENT':
return { value: state.value + 1 };
case 'DECREMENT':
return { value: state.value - 1 };
default:
return state;
}
}
class Counter extends Component {
state = counter(undefined, {});
dispatch(action) {
this.setState(prevState => counter(prevState, action));
}
increment =() => {
this.dispatch({ type: 'INCREMENT' });
};
decrement =() => {
this.dispatch({ type: 'DECREMENT' });
};
render() {
return (
<div>
{this.state.value}
<button onClick={this.increment}>+</button>
<button onClick={this.decrement}>-</button>
</div>
)
}
}
哦有趣,謝謝你。我沒有意識到你有兩個選擇setState - 對象或函數。我只用過這個對象來設置新的狀態。是否可以使用該函數的回調函數,使這4個選項? – Turnipdabeets
嗯,我鏈接到了文檔,並概述了我的答案中可用的** 3 **選項。 'setState'有** 3 **可供選擇;不是2或4. – naomik
好吧,看起來回調只能與文檔中的對象配對。但它沒有給出使用該回調的例子,或者爲什麼你需要回調。 – Turnipdabeets