react組件傳值,大概有下面幾種方法:
- props
- context
- redux
- react-router 路由切換時通過url傳值(少量非機密數據,其實也是props傳)。
今天記錄一下通過redux來傳值的實現。
我們先寫一個createAction的函數:
export function setAnalysisParams(params) {
return {
type: SET_ANALYSIS_PARAMS,
result: params
}
}
在reducer里面:
export default function reducer(state = initialState, action = {}) {
switch (action.type) {
case SET_ANALYSIS_PARAMS:
return {
...state,
params: action.result
};
default:
return state;
}
當action觸發reducer時,會把action的result傳給reducer的params。寫好這里,我們就可以在組件中傳給adction params了。
@connect(
() => ({
}),
{
setAnalysisParams
})
先把actionCreator拿出來。
在組件的某個需要的地方,可以直接向它傳我們要放進redux里的數據:
this.props.setAnalysisParams({
someModels
});
這時,我們就可以在另外一個組件中取到剛剛放進去的數據。
另外一個組件:
@connect(
state => ({
example: state.clinic.params
}),
{}
)
把redux中的params數據映射到example上。
下面,就可以用了:
const {someNames, ...} = this.props.example; //取出數據名
以上,就實現了redux來傳值的方法。適合非父子組件且嵌套關系復雜的組件之間數據的傳遞。