编辑:我已经稍微调整了我的代码,现在我很确定无论发生什么,我的减速器都会在“动作”处返回未定义。所以我认为这是问题所在,或者是 combinereducer。此外,我返回了固定变量,但我仍然未定义
我没有看到错误隐藏在哪里,但我怀疑我的减速器太慢了。
我的目标是什么,我的目标是从一个 api 中获取所有成员。为此,我使用 combinereducer 和 thunk。
此外,我使用 await 功能,请求被正确发出和接收。不幸的是,结果出现得太晚了,反应不再考虑,这让我感到奇怪。所以我怀疑我的减速器可能设置错误。
这是我的代码:
// file: myAPP/src/index.js
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import { createStore, applyMiddleware} from 'redux';
import thunkMiddleWare from "redux-thunk";
import './style/index.css';
import App from './App';
import reducer from './reducer/index';
let store = createStore(reducer, applyMiddleware(thunkMiddleWare));
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root')
);
这是我处理请求的操作(myAPP/src/action/action.js):
import axios from 'axios';
export const getMemberList = () => {
return function(dispatch){
axios.get("http://192.168.178.58")
.then(result =>{
dispatch({type: "memberList", payload:result.data})
})
}
}
我处理存储结果的减速器(myApp/src/reducer/member.js)+我的组合减速器:
let initialState = [];
const member = (state = initialState, action) => {
if (action?.type === "memberList") {
console.log("member.js: ", action.payload);
return action.payload
} else {
return state
}
}
export default member;
----- NEW FILE -----
import { combineReducers } from 'redux';
import reducer from './reducer';
import members from './member';
let reduce = combineReducers({
memberList: members,
members: reducer
});
export default reduce;
并且至少我的应用程序发生错误(myApp/src/app.js):
import React from 'react';
import {connect} from 'react-redux';
import './style/App.css';
import Member from './Member';
import { getMemberList } from './action/action';
class App extends React.Component {
constructor(props){
super(props);
this.state = {
data : []
}
this.props.getMemberList();
}
render() {
console.log(this.props) //<--- *3
return (
<div className="App">
{
this.state.data?.length >= 2 ?(
console.log(this.props.membersList) //<---- *4
) : null
}
</div>
);
}
}
let mapStateToProps = function(state){
return ({
membersList: state
})
}
let mapDispatchToProps = {
getMemberList : getMemberList
}
let AppContainer = connect(mapStateToProps,mapDispatchToProps)(App)
export default AppContainer;
1-3 的所有标记都是空的。
但是如果我去'myApp/src/action/action.js'。我看到它是成功的。但正如我一开始所说,我认为储蓄是错误的。
无论如何,它没有被渲染,也没有显示....所以结果见 *4 没有显示。
任何想法?