亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Redux 狀態問題:類型錯誤:未定義不是對象

Redux 狀態問題:類型錯誤:未定義不是對象

四季花海 2023-09-14 17:47:07
我對原生和 Redux 的反應很陌生,特別是我收到了一條我真的很難處理的錯誤消息。這是我收到的錯誤TypeError:未定義不是對象(評估 '(0, _reactRedux.useSelector)(function (state) { return state.myPigeons.myPigeons; }).length')我將在這里向您展示迄今為止我得到的所有相關代碼,然后解釋我這一切背后的意圖。主屏.jsPigeon.js(動作)export const ADD_PIGEON = 'ADD_PIGEON';export const addPigeon = () => {    return {type: ADD_PIGEON}};Pigeon.js(減速器)import {ALLPIGEONS} from '../../data/pigeons_data';import { ADD_PIGEON } from '../actions/pigeon';const initialPigeonState = () => {    myPigeons = []};const pigeonReducer = (state = initialPigeonState, action) => {    switch(action.type){        case ADD_PIGEON:{            var generatedPigeon = Math.floor(Math.random() * ALLPIGEONS.length);            generatedPigeon.nickname = "Kuba";            var updatedPigeons = [...state.myPigeons, generatedPigeon]            return{...state, myPigeons: updatedPigeons}        }    };    return state;};export default pigeonReducer;鴿子數據.jsimport pigeon from '../models/pigeon';const ALLPIGEONS = [    new pigeon(        1,        "red",        "Red-billed pigeon",        " "    ),    new pigeon(        2,        "blue",        "Blue pigeon",        " "    ),    new pigeon(        3,        "white",        "Release dove",        " "    ),    new pigeon(        4,        "brown",        "Brown cuckoo-dove",        " "    ),    new pigeon(        5,        "green",        "Green pigeon",        " "    ),];export default ALLPIGEONS;應用程序.js//Automatic importsimport { StatusBar } from 'expo-status-bar';import React, {useState} from 'react';import { StyleSheet, Text, View } from 'react-native';import { Provider } from 'react-redux';//My importsimport * as Font from 'expo-font';import {AppLoading} from 'expo';import ReduxThunk from 'redux-thunk';import { createStore, combineReducers, applyMiddleware } from 'redux';這里的問題基本上是我想在 redux 中有一個狀態,其中存儲我所有的鴿子(我的狀態現在應該是空的,因為我沒有向我的狀態添加任何鴿子)并且在我單擊主屏幕中的按鈕后。在 Node.js 中我向狀態添加了一只鴿子,以便文本可以顯示我有多少只鴿子。現在,當我進入主屏幕時,應用程序總是崩潰。我很感謝任何幫助!
查看完整描述

4 回答

?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

main.js 中的 state.myPigeons 在啟動應用程序時未定義。如果您嘗試對 redux 對象執行某些操作,則應在其中定義該值。最好的方法是始終在代碼中進行防御性檢查,以檢查對象是否“未定義”。



查看完整回答
反對 回復 2023-09-14
?
嚕嚕噠

TA貢獻1784條經驗 獲得超7個贊

這段代碼看起來不對


var generatedPigeon = Math.floor(Math.random() * ALLPIGEONS.length);

generatedPigeon.nickname = "Kuba";


嘗試更多類似


var generatedPigeonNo = Math.floor(Math.random() * ALLPIGEONS.length);

var generatedPigeon= ALLPIGEONS[generatedPigeonNo];

generatedPigeon.nickname = "Kuba";


查看完整回答
反對 回復 2023-09-14
?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

如果有人仍然試圖找出給定代碼中的問題,我想我明白了;

const initialPigeonState = () => {
    myPigeons = []
};

這就是整個問題。這里initialPigeonState定義為一個不返回任何東西的函數。從而導致錯誤。

現在為了消除錯誤,我們可以定義initialPigeonState為;

initialPigeonState = {
    myPigeons: []
}

或者,如果您想將其保留為函數,則從中返回一個對象;

const initialPigeonState = () => ({ 
   myPigeons: []
});

箭頭符號后面的括號表示return返回其內部內容(此處為對象)。


查看完整回答
反對 回復 2023-09-14
?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

您在哪里聲明 MainScreen ?在 PB 導航器中?



查看完整回答
反對 回復 2023-09-14
  • 4 回答
  • 0 關注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號