状态未更新

时间:2021-05-26 23:06:26

标签: javascript reactjs jsx

我是 React 的菜鸟,我正在了解状态以及如何使用它。我在练习时注意到,当我执行下一个代码时,状态没有更新。

import ExpensesItems from "./components/Expenses/Expenses";
import NewExpense from "./components/NewExpense/NewExpense";
import { useState } from "react";
let DUMMY_EXPENSES = [
  {
    date: new Date(2021, 6, 15),
    description: "Zapatos",
    price: "1500",
  },
];
function App() {
  const [expense, setExpenses] = useState(DUMMY_EXPENSES);
  const onNewExpenseHandler = (expense) => {
    DUMMY_EXPENSES.push(expense);
    setExpenses(DUMMY_EXPENSES);
  };
  return (
    <div>
      <NewExpense onNewExpense={onNewExpenseHandler} />
      <ExpensesItems expenses={expense} />
    </div>
  );
}
export default App;

但是,当我改变状态时,就像使用扩展运算符更新状态一样:

  import NewExpense from "./components/NewExpense/NewExpense";
  import { useState } from "react";
  let DUMMY_EXPENSES = [
    {
      date: new Date(2021, 6, 15),
      description: "Zapatos",
      price: "1500",
    },
  ];
  function App() {
    console.log("RE EXECUTED");
    const [expense, setExpenses] = useState(DUMMY_EXPENSES);

    const onNewExpenseHandler = (expense) => {
      DUMMY_EXPENSES.push(expense);
      setExpenses([...DUMMY_EXPENSES]);
    };
    return (
      <div>
        <NewExpense onNewExpense={onNewExpenseHandler} />
        <ExpensesItems expenses={expense} />
      </div>
    );
  }
  export default App;

虽然它有效,但我想知道我之前的代码没有的原因。有人知道吗?

0 个答案:

没有答案