[英]State doesn't have variable in react redux, variable not found on state
我正在使用React redux在我的應用程序中存儲狀態。
我有以下組成部分:
import { connect } from 'react-redux'; import { setCompleted } from '../actions/completedActions'; class LoginScreen extends React.Component { static navigationOptions = { title: 'Login' }; constructor(props) { super(props); this.state = { completedChallenges: [] } } componentDidMount() { } render() { return ( <View style={styles.container}> <View style={styles.buttonContainer}> <Button onPress={this._handlePressAsync}> Hit me! <Button> </View> </View> ); } _handlePressAsync = async () => { fetch(API + userInfo.id) .then((response) => response.json()) .then((responseJSON) => { console.log(responseJSON); for (var i = 0; i < responseJSON.length; i++) { this.props.dispatch(setCompleted(responseJSON[i])); } }) }; } }); export default connect()(LoginScreen);
我的setCompleted動作如下:
export const setCompleted = (completedChallenge) => { console.log("completed challenge in action"); console.log(completedChallenge); return { type: 'SET_COMPLETED', completedChallenge } }
而我的completedReducer如下:
const completedReducer = (state = [], action) => { console.log("completedReducer"); console.log(state); switch(action.type) { case 'SET_COMPLETED': return [ ...state, { completedChallenges: [ ...state[completedChallenges], action.completedChallenge ] } ] default: return state } } export default completedReducer
我已經將減速器添加到combineReducers()
函數中。 當我運行代碼並按下按鈕時,執行過程一直進行到減速器,然后出現錯誤, "[Unhandled Promise rejection: ReferenceError: Can't find variable: completedChallenges]"
; 這是有道理的,因為狀態打印為[]
。 但是,如何向狀態添加完成的挑戰?
謝謝
也許在您的減速器中,您的意思是:
return [
...state,
{ completedChallenges: [
...state[action.completedChallenge],
action.completedChallenge
] }
]
甚至我也不確定您要做什么...您期望減速器的形狀是什么?
另外,為什么您的組件中有狀態?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.