我正在尝试使Redux可以与我的应用正常工作。它似乎在某种程度上起作用。但是,返回数据后,render函数似乎没有更新。
在尝试对此进行测试时,我已执行以下操作:
const mapStateToProps = (state, ownProps) => {
console.log(state.correct_property_name)
console.log(state)
return {
data: state.correct_property_name
};
};
在这种情况下,correct_data_name
的console.log返回为空数组[]。调度似乎根本没有被调用。
但是,如果我将上面代码中的最后一行更改为不正确的属性名称,则console.log确实可以工作,将调用dispatch,但是我的render函数不会重新加载:
const mapStateToProps = (state, ownProps) => {
console.log(state.correct_property_name)
console.log(state)
return {
data: state.wrong_property_name
};
};
问题:
为什么将最后一行更改为错误的属性名称会突然导致console.log显示数据?
如果有用的话,下面是文件中的其余行:
const mapDispatchToProps = (dispatch, ownProps) => ({
fetchData() {
dispatch(mySpecialActions.fetchMySpecialData());
}
});
export default connect(mapStateToProps, mapDispatchToProps)(MyClassName);
操作:
import Axios from 'axios';
const apiUrl = '/api/my_data/';
export const fetchMySpecialDataSuccess = (correct_property_name) => {
return {
type: 'FETCH_MY_SPECIAL_DATA_SUCCESS',
correct_property_name
}
};
export const fetchMySpecialData = () => {
console.log("TEST ONE")
return (dispatch) => {
console.log("DISPATCH")
return Axios.get(apiUrl)
.then(response => {
console.log("DATA")
dispatch(fetchMySpecialDataSuccess(response.data))
})
.catch(error => {
console.log("ERROR")
console.log(error)
throw(error);
});
};
};
仅当我将主文件的最后一行设置为data: state.incorrect_property_name
时,操作文件中的注释才会显示。对我来说,这是指我指定正确的属性名称时甚至没有调用操作。但是当我指定假属性名称时,确实会调用该动作。
异径管:
import * as actionTypes from '../actions/actionTypes'
export const mySpecialDataReducer = (state = [], action) => {
switch (action.type) {
case actionTypes.FETCH_MY_SPECIAL_DATA_SUCCESS:
return action.correct_property_name;
default:
console.log("DEFAULT STATE")
return state;
}
};