【发布时间】:2018-09-06 15:04:28
【问题描述】:
在我的动作类中,我有一个方法如下
export const userSettingFetch = () => {
const { currentUser } = firebase.auth();
return (dispatch) => {
firebase.database().ref(`/users/${currentUser.uid}/userSettings`)
.on('value', snapshot => {
dispatch({ type: USER_SETTING_FETCH_SUCCESS, payload: snapshot.val()});
});
};
};
一旦上述方法被调用,它会分派到UserSettingReducerreducer并存储到userSettingData状态,定义如下:
const INITIAL_STATE = {
userSetting_DailyLimit: '',
userSetting_City: '',
userSetting_DisplayName: '',
userSettingData: null
};
export default (state = INITIAL_STATE, action) => {
console.log(action);
switch (action.type) {
case USER_SETTING_UPDATE:
return { ...state, [action.payload.prop]: action.payload.value };
case USER_SETTING_SUBMISSION_SUCCESS:
return state;
case USER_SETTING_FETCH_SUCCESS:
return { ...state, userSettingData: action.payload };//action.payload;
default:
return state;
}
};
下面是我的combineReducers 代码:
export default combineReducers({
auth: AuthReducer,
userSetting: UserSettingReducer
});
现在来到我的组件如下;
class MainScreen extends Component {
componentWillMount() {
console.log('inside MainScreen componentWillMount method');
this.props.userSettingFetch();
//console.log('Name is: '+this.props.userSettingData.userSetting_DisplayName);
}
render() {
return(
<Text>{this.props.userSettingData.userSetting_DisplayName}</Text>
);
}
}
const mapStateToProps = ({ auth, userSetting }) => {
const { email, password, error, loading } = auth;
const { userSettingData } = userSetting;
return { email, password, error, loading, userSettingData };
};
export default connect(mapStateToProps,{ userSettingFetch })(MainScreen);
以下是应用运行时的控制台日志:
对我来说,一切看起来都很完美,但是我收到异常说 userSettingData 未定义?
【问题讨论】:
-
userSetting 的 INITIAL_STATE 是什么?
-
如果您能提供 Plunker 样本或类似的东西,将会很有帮助并且更快。
-
@MukeshSoni:用户设置的 INITIAL_STATE 为空
-
@MukeshSoni:请再次参考我的问题,其中包含
INITIAL_STATE
标签: firebase react-native redux components redux-thunk