reactjs - 用于全局访问状态的 React-redux
问题描述
此组件在每次单击时将状态切换为 true 和 false。
const mapStateToProps = state => {
return {
branding:state.brand
}
}
const mapDispatchToProps = {
clickEvent:toggleState
}
class Files extends React.Component {
constructor(props) {
super (props)
this.state = {
brand: false,
}
}
render(){
return (
<div className="bodywrapper">
<div className="projectcontainer">
<div className="textcontainer">
<div className="textheader">Files you have</div>
</div>
<div className="bodycontainer">
<button
className="filebutton"
onClick = {this.props.clickEvent}
name = "brand">
Brand Guide
{this.props.branding && <div className="tickicon">O</div>}
</button>
<div className="filebutton"> Content</div>
</div>
<div className="buttoncontainer">
<div className="bottontext"><a href="filesneeded.html">Next step</a> </div>
</div>
</div>
<div className="sliderwrapper">
<div className="slide"></div>
<div className="slide"></div>
<div className="slide"></div>
<div className="slide"></div>
<div className="slide"></div>
</div>
</div>
)
}
}
export default connect(mapStateToProps,mapDispatchToProps)(Files)
这里我使用 Redux 来访问全局状态。MapDispatchToProps 触发 toggleState 的动作。
import { TOGGLE } from '../Redux/constants.js'
export const toggleState =()=> ({
type:TOGGLE,
})
并且 reducer 在每次点击时返回相反的状态
import { TOGGLE } from '../Redux/constants'
const initialState = {
brand:false
}
export const toggleStater = (state = initialState,action = {}) => {
switch (action.type) {
case TOGGLE:
return !state
break;
default:
return state
break;
}
}
我使用 MSTP 从 Redux 存储访问该状态,例如this.props.branding
. 并使用此代码更改用户界面。{this.props.branding && <div className="tickicon">O</div>}
不幸的是,这段代码可以正常工作。有人请分享错误。
解决方案
当您像(?)一样使用它时,您initialState
是一个对象。!state
此外,您不需要break
after return
in switch
case。
const initialState = {
brand: false,
};
export const toggleStater = (state = initialState, action = {}) => {
switch (action.type) {
case TOGGLE:
return { ...state, brand: !state.brand };
default:
return state;
}
};
推荐阅读
- python - 如何获取特定 MySQL 列的相同单词数?
- ruby-on-rails - 如何知道一个属性是否被委托?
- sql - 具有关系的记录的版本控制概念(外键)[数据库]
- node.js - 无法更改 nodejs 中 sftp 客户端的 .then() 和 .catch() 中的局部变量 | 天蓝色的功能
- pandas - Pandas with Series 中的重新索引如何工作?
- javascript - 递归使用 RxJs
- haskell - 尝试用 haskell 中的给定字符替换字符串中的字符(没有预定义的函数)。例如,输入 'hihi' 到 'haha'
- python - 处理仅由某些 Python 类使用的导入的最佳方法
- jquery - 如何循环和求和表单元素内的总值
- reactjs - React Hooks useEffect 保存最后一个状态,不会用新状态更新它。它以两种不同的状态运行两次