反应 useState 条件初始值
React useState conditional initial value
我想做的是:
单击按钮时,应从数组列表中删除初始值并替换为组件值。
另一方面,数组列表在任何时候都不应该为空。
如果您从列表中一个一个地删除您的组件(通过在它们已经被选中时选择它们),初始值应该会在所有组件都消失后立即重新出现。
这是我的代码:
import "./box.css";
import React from "react";
export default function Box({ name, age, id, adder }) {
return (
<div className="container">
<p>ID: {id}</p>
<p>Name: {name}</p>
<p>Age : {age}</p>
<button
onClick={() => {
adder(name, age);
}}
>
click me
</button>
</div>
);
}
嘿,所以我对你的 app.js 做了一些简单的更改 =>
import "./App.css";
import { data } from "./Data";
import { useState } from "react";
import React from "react";
import Box from "./components/box";
function App() {
const [list, setList] = useState([]);
const adder = (name, age) => {
if (list.some((item) => item.name === name)) {
setList(list.filter((item) => item.name !== name));
} else {
setList([...list, { name: name, age: age }]);
}
};
console.log(list);
return (
<div className="App">
{data.map((el) => {
return <Box key={el.id} {...el} adder={adder} list={list} />;
})}
<h3>
ArrayList :
{list.length >= 1? list.map((el) => {
return `[${el.name} ${el.age}], `;
}):'unknown unknown'}
</h3>
</div>
);
}
export default App;
我所做的是从列表中删除初始对象(将其留空[]),然后询问列表中是否有项目,如果没有,我会根据需要显示未知。
我想做的是:
单击按钮时,应从数组列表中删除初始值并替换为组件值。
另一方面,数组列表在任何时候都不应该为空。 如果您从列表中一个一个地删除您的组件(通过在它们已经被选中时选择它们),初始值应该会在所有组件都消失后立即重新出现。
这是我的代码:
import "./box.css";
import React from "react";
export default function Box({ name, age, id, adder }) {
return (
<div className="container">
<p>ID: {id}</p>
<p>Name: {name}</p>
<p>Age : {age}</p>
<button
onClick={() => {
adder(name, age);
}}
>
click me
</button>
</div>
);
}
嘿,所以我对你的 app.js 做了一些简单的更改 =>
import "./App.css";
import { data } from "./Data";
import { useState } from "react";
import React from "react";
import Box from "./components/box";
function App() {
const [list, setList] = useState([]);
const adder = (name, age) => {
if (list.some((item) => item.name === name)) {
setList(list.filter((item) => item.name !== name));
} else {
setList([...list, { name: name, age: age }]);
}
};
console.log(list);
return (
<div className="App">
{data.map((el) => {
return <Box key={el.id} {...el} adder={adder} list={list} />;
})}
<h3>
ArrayList :
{list.length >= 1? list.map((el) => {
return `[${el.name} ${el.age}], `;
}):'unknown unknown'}
</h3>
</div>
);
}
export default App;
我所做的是从列表中删除初始对象(将其留空[]),然后询问列表中是否有项目,如果没有,我会根据需要显示未知。