Reactjs 使用带有React钩子的redux连接
这不是关于react redux钩子的问题,比如Reactjs 使用带有React钩子的redux连接,reactjs,redux,react-redux,react-hooks,Reactjs,Redux,React Redux,React Hooks,这不是关于react redux钩子的问题,比如useSelector或useDispatch。我很想知道老式的react reduxconnect()如何使用功能组件,以及在本例中何时需要使用react钩子,如useffect 假设我有一个功能组件,如果存在someReduxData,它会以绿色呈现“Hello world”,否则它会以红色呈现 const RandomComponent = ({ someReduxData }) => { const style = { c
useSelector
或useDispatch
。我很想知道老式的react reduxconnect()
如何使用功能组件,以及在本例中何时需要使用react钩子,如useffect
假设我有一个功能组件,如果存在someReduxData
,它会以绿色呈现“Hello world”,否则它会以红色呈现
const RandomComponent = ({ someReduxData }) => {
const style = {
color: someReduxData ? "green" : "red";
};
return (
<div style={style}>Hello world</div>
);
}
const mapStateToProps = (state) => {
return {
someReduxData: state.someReduxData;
};
};
export default connect(mapStateToProps)(RandomComponent);
constrandomComponent=({someReduxData})=>{
常量样式={
颜色:someReduxData?“绿色”:“红色”;
};
返回(
你好,世界
);
}
常量mapStateToProps=(状态)=>{
返回{
someReduxData:state.someReduxData;
};
};
导出默认连接(MapStateTops)(随机组件);
假设组件第一次装载到DOM时,
someReduxData
为空。然后它改变状态,使其不再为空。这将强制重新渲染RandomComponent
,使其以绿色渲染吗?如果没有,那么我假设我需要使用useffect()
?侦听someReduxData
上的更改,它将强制重新呈现随机组件。无论类别与功能组件如何,connect的工作原理都是相同的
下面是一个使用函数组件的示例:在将App div变为绿色的操作分派之前,有2秒的setTimeout
还有一个相同组件使用钩子而不是连接的示例
connect和HOOK之间的主要区别在于connect本质上充当组件的角色。这可以通过布尔标志来关闭,但您可能永远不必这样做:
const initialstate={
someReduxData:null,
};
const reducer=(state=initialstate,action)=>{
开关(动作类型){
案件‘行动’:
返回{
someReduxData:action.data,
};
违约:
返回初始状态;
}
};
const actionCreator=(数据)=>{
返回{
键入:“操作”,
数据,
};
};
const store=Redux.createStore(reducer);
常量应用=({someReduxData})=>{
返回(
一些div将在2秒内变为绿色
);
};
常量mapStateToProps=(状态)=>{
返回{
someReduxData:state.someReduxData,
};
};
const WrappedApp=ReactRedux.connect(mapStateToProps)(应用程序);
常量AppWithHooks=()=>{
const someReduxData=ReactRedux.useSelector(state=>state.someReduxData);
返回(
一些有钩子的潜水艇会在2秒内变成绿色
);
};
ReactDOM.render(
,
document.querySelector(“#root”)
);
setTimeout(()=>store.dispatch(actionCreator('green')),2000代码>
.green{
背景颜色:绿色;
}
它将强制重新渲染随机组件<代码>连接
的工作原理相同,无论类别与功能组件如何。