10 reactjs redux redux-thunk react-redux
我正在寻找thunk并试图弄清楚如何实现api调用.它没有用,所以我回到了基础.当我点击它'Getting here!在控制台中显示的按钮时,但是当我没有显示任何内容时console.log(dispatch).我在这里错过了什么吗?
import React from 'react';
import ReactDOM from 'react-dom';
import { createStore, applyMiddleware } from 'redux';
import { connect, Provider } from 'react-redux';
import thunk from 'redux-thunk'
import axios from 'axis';
const store = createStore(
reducer,
applyMiddleware(thunk)
);
function fetchUser() {
return axios.get('https://randomuser.me/api/');
}
function addUser() {
console.log('Getting here');
return (dispatch) => {
console.log(dispatch) //not showing anything
return fetchUser().then(function(data){
console.log(data);
});
};
}
class App extends React.Component {
addUser() {
addUser();
}
render() {
return (
<button onClick={this.addUser.bind(this)}>+</button>
)
}
}
const mapPropsToState = function(store){
return {
newState: store
}
}
var ConnectApp = connect(mapPropsToState)(App);
ReactDOM.render(
<Provider store={store}>
<ConnectApp />
</Provider>,
document.getElementById('app')
)
Run Code Online (Sandbox Code Playgroud)
Ram*_*shi 16
您无法addUser()从组件中调用常规函数.您必须使用一个mapDispatchToProps函数并将其传递给您的connect调用才能发送addUser().
const mapDispatchToProps = dispatch => ({addUser: () => dispatch(addUser())})
Run Code Online (Sandbox Code Playgroud)
然后
ConnectApp = connect(mapPropsToState, mapDispatchToProps)(App);
Run Code Online (Sandbox Code Playgroud)
现在你可以把它称为道具.
addUser() {
this.props.addUser();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10610 次 |
| 最近记录: |