redux store.dispatch在嵌套组件内不工作
我做了实验工作来深度稀释它的复杂性,但它不起作用。当我点击redux store.dispatch在嵌套组件内不工作,redux,Redux,我做了实验工作来深度稀释它的复杂性,但它不起作用。当我点击+按钮时,没有反应。要快速开始并想象我对帮助者说了什么,我在链接中创建了它: const reducer=(状态=0,操作)=>{ 开关(动作类型){ 案例“增量”:返回状态+1; 案例“减量”:返回状态-1; 默认:返回状态; } } const{createStore}=Redux; const store=createStore(reducer); 常量计数器=()=>{ 返回( {store.getState()} + - )
+
按钮时,没有反应。要快速开始并想象我对帮助者说了什么,我在链接中创建了它:
const reducer=(状态=0,操作)=>{
开关(动作类型){
案例“增量”:返回状态+1;
案例“减量”:返回状态-1;
默认:返回状态;
}
}
const{createStore}=Redux;
const store=createStore(reducer);
常量计数器=()=>{
返回(
{store.getState()}
+
-
)
}
const render=ReactDOM.render(
,
document.getElementById('root'))
);
//在这里添加您的代码
存储。订阅(呈现);
render()
) 这不是react和redux的耦合方式(您需要使用react-redux库、提供程序组件和
useDispatch
和useSelector
挂钩。决不引用直接将存储在一个组件中!)
或者干脆让react重播
此外,这是一种非常古老的redux风格,它将使您编写的代码比最终需要的代码多得多
我建议您遵循在上提供的官方redux教程,这不是react和redux的结合方式(您需要使用react redux库、提供程序组件和useDispatch
和useSelector
挂钩。从不直接在您的组件中引用存储
)
或者干脆让react重播
此外,这是一种非常古老的redux风格,它将使您编写的代码比最终需要的代码多得多
我建议您遵循上提供的官方redux教程,谢谢您的学习建议,但是我使用的代码来自reduxjs创建者Dan Abramov和他的redux教程(关于egghead.io
)。导师强调这是未来实际使用的基础。所以现在我想我必须知道这个代码片段中发生了什么,然后切换到您的教程。谢谢。我忽略了从不引用存储在其中直接使用您的组件!)代码>我猜这是答案,我接受答案,即使我不知道为什么。谢谢,如果你能告诉我为什么不能直接引用,我会感谢你的慷慨。如果没有告诉我,也谢谢。从本质上说,该教程展示了react redux是如何编写的,但不是你应该如何编写任何生产代码。如果它应该执行类似的操作,那么您已经错过了很多语法,即multiple()=>
。直接使用store
意味着您必须控制何时发生重播(正如您所注意到的),这相当棘手。在“真实生活”中,您可以使用useSelector
钩子,因为它会自动处理所有这些。感谢您的学习建议,但是我使用的代码来自reduxjs创建者Dan Abramov和他的redux教程(关于egghead.io
)。导师强调这是未来实际使用的基础。所以现在我想我必须知道这个代码片段中发生了什么,然后切换到您的教程。谢谢。我忽略了从不引用存储在其中直接使用您的组件!)代码>我猜这是答案,我接受答案,即使我不知道为什么。谢谢,如果你能告诉我为什么不能直接引用,我会感谢你的慷慨。如果没有告诉我,也谢谢。从本质上说,该教程展示了react redux是如何编写的,但不是你应该如何编写任何生产代码。如果它应该执行类似的操作,那么您已经错过了很多语法,即multiple()=>
。直接使用store
意味着您必须控制何时发生重播(正如您所注意到的),这相当棘手。在“真实生活”中,您使用useSelector
钩子,因为它会自动处理所有这些。
const reducer=(state=0,action)=>{
switch(action.type){
case'INCREMENT':return state+1;
case'DECREMENT':return state-1;
default:return state;
}
}
const {createStore}=Redux;
const store = createStore(reducer);
const Counter=()=>{
return(
<div>
<p id='number'>{store.getState()}</p><br/>
<button id='increment' onClick={store.dispatch({type:'INCREMENT'})}>+</button>
<button id='decrement'>-</button>
</div>
)
}
const render=ReactDOM.render(
<React.StrictMode>
<Counter />
</React.StrictMode>,
document.getElementById('root')
);
// Add your code here
store.subscribe(render);
render()