【发布时间】:2020-06-29 14:46:44
【问题描述】:
在我的 app.js 中,我有我的 mapDispachToProps 函数,它应该向 redux 商店中的 reducer 发送一个 type:increment 的动作。当 reducer 收到它时,他应该将初始状态增加 1。
在标题组件中,它是 app.js 组件的子组件,我想通过 mapStateToProps 和 this.props.value 显示新值。问题是它不起作用,我在控制台中没有收到错误消息。
当我在 App.js 中执行所有操作时,它运行良好。
我做错了什么?
提前致谢
我的 index.js
let store = createStore(increaseReducer);
ReactDOM.render(
<Provider store = {store}>
<App/>
</Provider>,
document.getElementById('root')
);
我的店铺
export function increaseReducer(state = 0, action) {
if(action.type == "INCREMENT") {
return state+1;
}
else {
return state;
}
}
export default increaseReducer;
我的 app.js
import React, {Component} from 'react';
import{ connect }from 'react-redux';
import {Heading} from './components/heading';
class App extends Component {
constructor(props) {
super(props);
}
render() {
return (
<div className="App">
<Heading></Heading>
<button onClick={this.props.increment} > Counter</button>
</div>
);
}
}
let mapDispachToProps= {
increment:()=> {
return {type:"INCREMENT"}}
}
let AppContainer= connect(null,mapDispachToProps)(App);
export default AppContainer;
我的heading.js
import React, {Component} from 'react';
import{ connect }from 'react-redux';
export class Heading extends Component {
constructor(props){
super(props);
}
render() {
return(
<h1>Click Counter: {this.props.value} </h1>
)
}
}
let mapStateToProps = (state)=>{return {
value: state
}}
let headingContainer = connect(mapStateToProps)(Heading);
export default headingContainer;
【问题讨论】:
-
您需要调度您的操作
-
@demkovych 不,mapDispatchToProps 可以是 object,mapDispatchToProps 没有问题(除了魔术字符串而不是常量)。
-
如果你把他们派到某个地方没有错,但问题是他不使用动作。
-
@demkovych 是的,他这样做了:
<button onClick={this.props.increment} >我将代码复制到我的答案中的 sn-p 并且它有效。调度不是问题,但导入才是问题。
标签: reactjs redux react-redux