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

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

無法讀取未定義的屬性“映射”-React 應用程序-useContext 和 useReducer

無法讀取未定義的屬性“映射”-React 應用程序-useContext 和 useReducer

忽然笑 2022-10-13 16:06:16
我正在使用 react 使用 contextHook 和 reducerHook 制作應用程序項目,但得到:TypeError:無法讀取未定義的屬性“地圖”幾天前同樣的代碼還在工作,但現在它給出了那個錯誤。我已經浪費了很多時間試圖在互聯網上尋找答案,但我無法獲得任何幫助......以下是錯誤圖片和我的代碼:Github repo 上的完整代碼錯誤圖片 1錯誤圖片 2錯誤圖片 3//App.jsimport React from 'react';import './App.css';import Header from './Header';import Balance from './Balance';import AccSummary from './AccSummary';import TransactionHistory from './Transactionhistory';import AddTransaction from './AddTransaction';function App() {  return (    <div className='container'>      <Header />      <Balance />      <AccSummary />      <TransactionHistory />      <AddTransaction />      </div>        );}export default App;//Transaction.jsimport React from 'react';export const Transaction = ({transObj}) => {     return (        <li>            <span>{transObj.description}</span>            <span> {transObj.amount} </span>          </li>    )}//TransactionHistory.jsimport React, { useContext } from 'react';import { TransactionContext } from './TransContext';import { Transaction } from './Transaction';function TransactionHistory() {    let  {transactions}  = useContext(TransactionContext);  return (    <div>      <h2> History </h2>      <hr />      <ul className='transaction-list'>        {transactions.map(transObj => (          <Transaction key={transactions.id} transactions = {transactions} />        ))}        //Add Transaction.jsimport React from 'react';function AddTransaction() {  return (    <div>    <h2 className='AddTrans'> <br /> Add New Transaction</h2>    <hr />    <form className = 'transaction-form'>      <label>        Enter Description <br />        <input type='text'        placeholder='Enter Detail of Transaction' className='color'/> <br />      </label>      <label>        Enter Amount <br />        <input type='Number'        placeholder='Enter Transaction Amount'/>      </label>      <br />      <input className='button' type="submit" value="Add Transaction"/>    </form>    </div>  );}
查看完整描述

1 回答

?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

對于TransactionHistory組件:

  1. 默認上下文值是一個數組,但您可以像對象一樣對其進行解構。

  2. 在映射函數中,您將原始數組作為道具而不是元素傳遞。

這是一個更新的版本:

function TransactionHistory() {

  const transactions = useContext(TransactionContext);

  return (

    <div>

      <h2> History </h2>

      <hr />

      <ul className="transaction-list">

        {transactions.map((transObj, index) => (

          <Transaction key={index} transaction={transObj} />

        ))}

      </ul>

    </div>

  );

}

然后,在Transaction組件中,它期待transObjprop,但它的父級傳入transactionprop。所以你也可以修復它:


從“反應”導入反應;


const Transaction = ({ transObj }) => {

  return (

    <li>

      <span>{transObj.description}</span>

      <span> {transObj.amount} </span>

    </li>

  );

};


查看完整回答
反對 回復 2022-10-13
  • 1 回答
  • 0 關注
  • 73 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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