0
我玩的反應本地/終極版和我派遣一個應該顯示數字又一個錯誤被拋出一個動作:react-native/redux - 操作不起作用?
未處理的異常JS:對象是不是一個陣營的孩子有效(發現: 帶鍵{type,payload})的對象。如果您打算呈現子集的集合 ,請改爲使用數組,或者使用React附件中的 createFragment(object)封裝對象。檢查
Text
的渲染方法 。
createStore.js
import { createStore, applyMiddleware, combineReducers } from 'redux';
import createLogger from 'redux-logger';
import numReducer from './reducers/numReducer';
const logger = createLogger();
export default (initialState = {}) => (
createStore(
combineReducers({
numbers: numReducer
}),
initialState,
applyMiddleware(logger)
)
);
App.js
import React from 'react';
import { Provider } from 'react-redux';
import HomeScreen from './components/HomeScreen';
import createStore from './createStore';
const store = createStore();
export default() => (
<Provider store={store}>
<HomeScreen />
</Provider>
);
numReducer.js
import { LIST_NUMBERS, PICK_NUMBER } from '../actions/actionTypes';
export default (state = [], action = {}) => {
switch (action.type) {
case LIST_NUMBERS:
return action.payload || [];
case PICK_NUMBER:
return action.payload;
default:
return state;
}
};
HomeScreen.js
import React from 'react';
import { View } from 'react-native';
import NavContainer from '../containers/NavContainer';
const HomeScreen =() => (
<View>
<NavContainer />
</View>
);
export default HomeScreen;
NavContainer.js
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
import { listNumbers, pickNumber } from '../actions/numberActions';
import Nav from '../components/Nav';
const mapStateToProps = state => ({
numbers: state.numbers
});
const mapDispatchToProps = dispatch => (
bindActionCreators({
listNumbers,
pickNumber
}, dispatch)
);
export default connect(
mapStateToProps,
mapDispatchToProps
)(Nav);
Nav.js
import React, { Component, PropTypes } from 'react';
import { View, Text } from 'react-native';
export default class Nav extends Component {
render() {
return (
<View>
<Text>FirstLine</Text>
<Text>SecondLind</Text>
<Text>Number: {this.props.pickNumber(3)}</Text>
</View>
);
}
}
請指教一下我做錯了。謝謝
謝謝。您是否始終根據預定義的生命週期方法派發操作,這是否是一條通用的經驗法則?或者我可以從組件中的自定義方法派發一個動作? – Wasteland
這實際上取決於您何時需要發送操作。例如,如果您有數據索引,則可能需要在組件掛載(componentDidMount)時分派檢索該數據的操作。如果您希望在單擊列表項目時更新redux存儲區中的值,可以通過將動作分派綁定到「onClick」來完成此操作。 –