假设我有一个简单的切换:

当我点击按钮时, colored颜色 成分在红色和蓝色之间变化

我可以通过这样做来达到这个效果.

指数js

Button: onClick={()=>{dispatch(changeColor())}}
Color: this.props.color ? blue : red

容器js

connect(mapStateToProps)(indexPage)

创造者行动.js

function changeColor(){
 return {type: 'CHANGE_COLOR'}
}

减速器.js

switch(){
case 'CHANGE_COLOR':
return {color: true}

但这是一个地狱般的代码编写的东西,我可以在5秒钟内实现与jQuery,一些类,和一些css...

我想我真正想问的是,我做错了什么?

推荐答案

Redux主要用于"应用程序状态"也就是说,与应用程序逻辑相关的任何内容.构建在其上的视图反映了该状态,但不必为其所做的所有事情专门使用该状态容器.

只需问以下问题:这个状态对应用程序的其余部分重要吗?应用程序的其他部分是否会根据该状态表现出不同的行为?在许多小案件中,情况并非如此.以下拉菜单为例:它打开或关闭的事实可能不会对应用程序的其他部分产生影响.所以,把它连接到你的store 可能有点过头了.这当然是一个有效的 Select ,但并不会给你带来任何好处.你最好用this.state,然后一天算一次.

在您的特定示例中,切换按钮的 colored颜色 是否会对应用程序的其他部分产生任何影响?如果它是应用程序主要部分的某种全局开/关切换,那么它肯定属于应用store .但是,如果在单击按钮时只是切换按钮的 colored颜色 ,则可以保留本地定义的 colored颜色 状态.点击按钮的动作可能会产生其他需要动作调度的效果,但这与它应该是什么 colored颜色 的简单问题是不同的.

一般来说,尽量保持应用程序状态尽可能小.你不必往里面塞everything块.当你不得不做的时候就go 做,或者保留一些东西是很有意义的.或者如果使用开发工具能让你的生活更轻松.但不要过分强调它的重要性.

Reactjs相关问答推荐

优化、自定义登录页面、使用用户ID而不是邮箱

ReferenceError:未在Redux组件中定义窗口

Redux向后端发送请求时出现钩子问题

根据另一个Select中的选定值更改Select中的值

使用REACT-RUTER-V6和ZUSTANDreact 中的身份验证

for each 子级加载父路由加载器

用于获取带有事件处理程序的API的动态路由

REACTION-Easy-SORT返回.map错误

自定义变量默认、聚焦和填充时所需TextField中标签的星号 colored颜色

更改点几何体的坐标会将其隐藏

状态更改是否卸载功能组件

滚动视图样式高度没有任何区别

React-dom 的钩子调用无效.我能做些什么?

为什么刷新页面时我的localStorage PET值变成空字符串?

如何通过 id 从 useSprings 数组中删除元素

如何避免在 react useEffect 上滚动时出现小的延迟?

如何使图标适合 react-bootstrap 中的行元素

如何用实际的br标签替换axios响应中的br标签?

ReactJS:按钮启用禁用更改 colored颜色

为什么 state redux-toolkit 是代理?