错误:操作可能没有未定义的"type"属性。你拼错常量了吗?



我一生无法弄清楚我做错了什么。我检查了其他人的帖子,这些帖子类似于我,找不到问题,有人可以帮忙吗?我昨天才开始进行反应和功能编程,所以很多这些东西对我来说都是新的。据我所知,我的行为一定有问题,或者我如何正确定义类型?这是我的代码。

index.android.js

function configureStore(initialState) {
    const enhancer = compose(
        applyMiddleware(
            thunkMiddleWare,
            loggerMiddleWare,
        ),
    );
    return createStore(reducer, initialState, enhancer)
}
const store = configureStore({});
const App = () => (
    <Provider store={store}>
        <AppContainer/>
    </Provider>
)
AppRegistry.registerComponent('BHPApp', () => App);

以及我的组件,还原器,动作和类型。

动作

import * as UserActions from './users'
export const ActionCreators = Object.assign({},
    UserActions
);
export const SET_ALL_USERS = 'SET_ALL_USERS';
import * as types from './types'
import ApiUtils from '../lib/apiUtils'
export function fetchAllUsers() {
    return (dispatch, getState) => {
        return fetch(URL + '/user/getAll')
            .then(ApiUtils.checkStatus)
            .then(response => {
                dispatch(setAllUsers({ hBaseUsers: response }));
            })
            .catch(e => {
                console.log(e)
            })
    }
}
function setAllUsers( {hBaseUsers} ) {
    hBaseUsers.forEach((hBaseUser) => {
        console.log(hBaseUser);
    });
    return {
        types: types.SET_ALL_USERS,
        hBaseUsers,
    }
}

还原器

import { combineReducers } from 'redux'
import * as userReducer from './users'
export default combineReducers(Object.assign(
    userReducer,
));
import createReducer from '../lib/createReducer'
import * as types  from '../actions/types'
export const getUsers = createReducer({}, {
    [types.SET_ALL_USERS](state, action){
        let newState = {};
        action.hBaseUsers.forEach( (hBaseUser) => {
           newState[hBaseUser.personUniqueID] = hBaseUser;
        });
        return newState;
    }
});
export const userCount = createReducer({}, {
    [types.SET_ALL_USERS](state, action){
        action.hBaseUsers.length;
    }
});

容器

class AppContainer extends Component{
    render(){
        return <Home {...this.props} />
    }
}
function mapDispatchToProps(dispatch) {
    return bindActionCreators(ActionCreators, dispatch);
}
    export default connect((state) =>  { return {} }, mapDispatchToProps)(AppContainer);
import React, { Component } from 'react'
import { connect } from 'react-redux'
import {
    ScrollView,
    View,
    TextInput,
    Image,
    TouchableHighlight,
    StyleSheet,
    Text
} from 'react-native'
class Home extends Component{
    searchPressed(){
        this.props.fetchAllUsers();
    }
    hBaseUsers(){
        return Object.keys(this.props.getUsers).map( key =>  this.props.getUsers[key])
    }
    render(){
        console.log(this.hBaseUsers());
        return<View>
            <View>
                <TouchableHighlight onPress={() => this.searchPressed() } >
                    <Text>Fetch Users</Text>
                </TouchableHighlight>
            </View>
            <ScrollView>
                {this.hBaseUsers().map((hBaseUser) => {
                    return <View>
                        <Text>
                            hBaseUser.personUniqueID
                        </Text>
                    </View>
                })}
            </ScrollView>
        </View>
    }
}
function mapStateToProps(state) {
    return{
        getUsers: state.getUsers
    }
}
export default connect(mapStateToProps)(Home);

我阅读了所有内容后,我的问题都可以在这些事情中,但我似乎找不到。据我所知,我正确地拼写并定义了所有内容。有人可以帮我吗?

您的setAllusers操作正在返回具有错误集属性集的对象:

function setAllUsers( {hBaseUsers} ) {
return {
    types: types.SET_ALL_USERS,
    hBaseUsers,
}

}

在您的返回语句中,将"类型"更改为"类型"以修复此错误。

i有相同的错误。就我而言,我错过了连接函数中的参数" mapdispatchtoprops",该参数用于将调度映射到道具。

最新更新