javascript - 从数组中删除项目时,数据未反射(reflect)在 UI 上

标签 javascript reactjs

// Delete Input Fields:-
const [salesProduct, setSalesProduct] = useState(props.inputValue);

const deleteInput = (id, indexValue) => {
 salesProduct.splice(indexValue, 1); // salesProduct is an array when delete 
 let data = salesProduct;
 // when console the data it is giving write out put but data is not reflecting 
 console.log(data);  
 setSalesProduct(data);
}

//下面是我的 Jsx,我正在使用 deleteInput 事件来删除项目,任何人都可以帮助我,我做错了什么
salesProduct.map((值,索引) => {

return (
<tr key={value.id}>    
<td scope="row">
<input id={value.id} value={value.shippingValue}  onChange={ (e) => handleInputAndDropdown(e, value.id, 'cartValue') } className={value.className} type={value.type} name={value.name} title={value.title} placeholder={value.placeholder} />
</td>    
<td>
 <input id={value.id} value={value.taxValue}  onChange={ (e) => handleInputAndDropdown(e, value.id, 'taxValue')}  className={value.className} type={value.type} name={value.name} title={value.title} placeholder={value.placeholder}/>
</td>    
<td>
{showDeleteBtn && <a href="#" onClick={() => deleteInput(value.id, index)}>Delete</a>}
</td>

</tr>
)
})

最佳答案

我会做的是完全不同的,而不是拼接,我会使用过滤方法

// Delete Input Fields:-
const [salesProduct, setSalesProduct] = useState(props.inputValue);

const deleteInput = (id) => {
  const newSales = salesProduct.filter(sale => sale.id != id); 
  setSalesProduct(newSales);
}

它将帮助您返回一个新数组,而不是删除您想要的数组并将值返回给您的拼接

关于javascript - 从数组中删除项目时,数据未反射(reflect)在 UI 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59989081/

相关文章:

reactjs - 连续显示 React 组件

javascript - 使用 React.Lazy 的动态延迟加载 (16.6.0)

JavaScript:构建新实例的方法

javascript - 超时/间隔是基于 CPU 还是浏览器?

reactjs - 如何在 i18next 翻译字符串中保留替换标签之间的空格字符

reactjs - react ,动态添加文本到引用跨度

javascript - 在 vue.js 中使用 moment.js

javascript - 我无法应用从表行中选择的数据的修改

reactjs - React Native - StyleSheet.absoluteFill() 和 StyleSheet.absoluteFillObject() 有什么区别?

css - Ant.Design 标签对齐