簡體   English   中英

狀態在React Redux中沒有變量,在狀態中找不到變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM