【发布时间】:2021-10-22 02:34:39
【问题描述】:
我从数据库中得到一个书单并存储在一个状态变量中书单也有书价字段
const [books, setBooks]=useState([])
setBooks(data)
数组中的每个书籍对象都有 BookName、Author、Price、Discount 等属性
我已经渲染了一个如下的 html 表格
return ( <div>
{books.map((x,i) => ( <tr>
<td>x.bookName</td>
<td>x.price</td>
<td><MyCustomTextInput onChange={e => handleChange(e, x.id)} value={x.discount}></MyCustomTextInput></td>
<tr></div>);
MyCustomTextInput 的示例代码如下
function MyCustomTextInput(props)
{ return (<div><TextInput></TextInput> </div>)
} exports default MyCustomTextInput
我更新“books”数组中相应对象价格的代码如下
function handleChange(x,id){
var obj = books[id];
obj.price = obj.price - e.target.value; //I am correctly getting discount in e.target.value
}
除了折扣后的价格没有反映在 UI 上之外,一切都正常工作。虽然它在数组中得到了正确更新,但没有反映在 UI 上。
任何帮助....
专家 -
【问题讨论】:
-
handleChange函数根本不更新状态。你是不是忘了用新的状态给setBooks打电话? -
@david 这是一个数组,我只是在更新已更改的相应书籍的价格。我不会再次重新分配数组。能否请您分享您对我如何做到这一点的想法?
标签: reactjs react-native