【发布时间】:2021-12-11 06:18:18
【问题描述】:
我通过使用 map 函数迭代它来显示我的状态,它是一个数组。此外,我有一个按钮可以在单击时反转数组。
import React, { useState, useEffect } from "react";
import PropTypes from "prop-types";
import "./App.css";
const App = (props) => {
const [reverse, setReverse] = useState(false);
const [arr, setArr] = useState([]);
useEffect(() => {
let newArr = props.arr;
newArr = newArr.reverse();
setArr(newArr);
}, [reverse, props.arr]);
return (
<div className="App">
<button
onClick={() => {
setReverse(!reverse);
}}
>
Reverse
</button>
{arr.map((e, i) => {
return (
<div key={i}>
<p>{e}</p>
</div>
);
})}
</div>
);
};
App.propTypes = {
arr: PropTypes.array,
};
export default App;
我认为我想做什么是相当明显的。但这对我不起作用,我不知道为什么。我必须单击两次才能完成第一次还原,然后出现奇怪的情况,其中呈现的数组与 Chrome 中的 React 开发工具在组件状态中显示的数组不匹配。
我无法解释这种行为。我开始认为这与我从道具中获取数组的事实有关,但我真的不知道。有什么想法吗?
【问题讨论】:
标签: javascript reactjs react-hooks