我使用了REACT和REDUX,API返回数据.在useDispatch
中写入的数据将如何在其他组件中使用.
如何在所有组件中提供customerId
.我创建了一个调用API的代码,并返回数据作为响应.我还造了一个减速器.不确定如何做到这一点,以便customerId
将是可用的.
const test = () => {
const [sessionInfo, setsessionInfo] = useState(useSelector(state => state.app.DataReducer.sessionDetails));
const uDispatch = useDispatch();
useEffect(() => {
sessionInformation();
async function sessionInformation() {
const session_ID = '5f9f0de7-c7b3-3029'
console.log("sessionInformaiton: " + session_ID)
await SessionInformationService({ sessionId: session_ID })
.then((result) => {
console.log("Result: " + JSON.stringify(result));
if (result.data !== undefined) {
setsessionInfo(result.data);
}
});
}
uDispatch(types.updateData({
sessionDetails: {
customerId: sessionInfo.customerId,
firstName: sessionInfo.customerfirstName,
lastName: sessionInfo.customerlastName,
fullName: sessionInfo.customerfullName,
}
})
);
}, []);
return (
<>
</>
)
};
export default test;
减速机
import * as types from './action';
export const initialState = {
sessionDetails: {
customerId: '',
customerfirstName: '',
customerlastName: '',
customerfullName: ''
}
}
const Data减速机 = (state = initialState, action) => {
switch (action.type) {
case types.UPDATE_DATA:
const output = action.payload;
if (output.sessionDetails) {
state.sessionDetails = output.sessionDetails;
}
return {
...state,
}
break;
default:
return state;
}
}
export default Data减速机;
Action.js
export const UPDATE_DATA = 'UPDATE_DATA';
export const updateData = payload => ({
type: UPDATE_DATA,
payload
});