Javascript 使用react中的useState方法从数组中删除上一个对象
我的代码Javascript 使用react中的useState方法从数组中删除上一个对象,javascript,reactjs,use-state,Javascript,Reactjs,Use State,我的代码 import React,{useState}来自“React”; 导入“/styles.css”; 导出默认函数App(){ const MAX_数量=10; 常数最小值=0; const[count,setCount]=useState(0); const[items,setItems]=useState([{id:0}]); 常量附加项=()=>{ 设置项([ …项目, { id:计数+1 } ]); 控制台日志(项目); }; 常数项=()=>{ setItems([{id:0
import React,{useState}来自“React”;
导入“/styles.css”;
导出默认函数App(){
const MAX_数量=10;
常数最小值=0;
const[count,setCount]=useState(0);
const[items,setItems]=useState([{id:0}]);
常量附加项=()=>{
设置项([
…项目,
{
id:计数+1
}
]);
控制台日志(项目);
};
常数项=()=>{
setItems([{id:0}])
控制台日志(项目);
}
函数add(){
如果(计数<最大数量){
设置计数(计数+1);
addItem();
}
}
函数负(){
如果(计数>最小数量){
设置计数(计数-1);
稳定项目()
}
}
返回(
{count}
+
-
);
}
我的问题是,虽然我可以始终将一个项目添加到我的项目数组中,但当按下“-”按钮时,我无法删除以前添加的项目。作为测试,我设置了“minusItem”函数,将数组设置回初始状态,但您会注意到,在按下“-”按钮后,另一个对象在设置之前添加到数组中,这是为什么
我只是尝试在按下“+”或“-”按钮时向数组中添加和减去项。任何关于如何做到这一点的建议都将不胜感激
const{useState}=React;
函数App(){
const MAX_数量=10;
常数最小值=0;
const[count,setCount]=React.useState(0);
const[items,setItems]=React.useState([{
身份证号码:0
}]);
常量附加项=()=>{
设置项([
…项目,
{
id:计数+1
}
]);
控制台日志(项目);
};
常数项=()=>{
setItems(previItems=>previItems.slice(0,-1));
控制台日志(项目);
}
函数add(){
如果(计数<最大数量){
设置计数(计数+1);
addItem();
}
}
函数负(){
如果(计数>最小数量){
设置计数(计数-1);
稳定项目()
}
}
报税表(<
div className=“应用程序”>
<
h1>{
计数
}<
按钮onClick={
添加
}>+<
按钮onClick={
减
}>-<
/div>
);
}
//渲染它
ReactDOM.render(
,
document.getElementById(“react”)
);代码>
要从数组中删除最后一项,并将其分配给状态。我更喜欢使用slice
constminusitem=()=>setItems(previitems=>previitems.slice(0,-1));
由于您不想删除数组中的特定元素,您只需pop()
数组中的最后一个元素并更新状态即可。@ShawnYap您能否提供一个sudo代码示例来了解它的外观。我实现了您对上面的实时代码片段的偏好,虽然它确实起作用,但控制台似乎指示在删除对象之前先添加对象。e、 g如果您单击“+”两次,您将看到该数组有两个对象,单击“-”,然后将一个对象添加到该数组中,但如果我随后按“-”,则会看到预期的两个对象。这是正确的行为吗?事实上我想我可能知道发生了什么。我想可能是这样的,我在控制台中看到了阵列的当前和以前的状态,这就是我看到效果的原因。我删除了控制台日志并将它们放在函数中的其他位置,现在看到了期望的效果。
import React, { useState } from "react";
import "./styles.css";
export default function App() {
const MAX_QUANTITY = 10;
const MIN_QUANTITY = 0;
const [count, setCount] = useState(0);
const [items, setItems] = useState([{ id: 0 }]);
const addItem = () => {
setItems([
...items,
{
id: count + 1
}
]);
console.log(items);
};
const minusItem = () => {
setItems([{ id: 0 }])
console.log(items);
}
function add() {
if (count < MAX_QUANTITY) {
setCount(count + 1);
addItem();
}
}
function minus() {
if (count > MIN_QUANTITY) {
setCount(count - 1);
minusItem()
}
}
return (
<div className="App">
<h1>{count}</h1>
<button onClick={add}>+</button>
<button onClick={minus}>-</button>
</div>
);
}