javascript - ReactJS - 为每个元素添加一个输入字段并从中获取值
问题描述
我正在制作“添加到购物车”功能。我的代码如下:
import React, { Component } from 'react';
import Items from '../json/items.json';
class AddToCart extends Component {
putInCart(i) {
// **** I WANT TO GET THE QUANTITY IN THIS FUNCTION ****
}
render() {
return (
<div>
{
Items.items.map((val, ind) => {
return (
<div>
<p>Name : {val.name}</p>
<p>Price : {val.price}</p>
<p>Availability : {val.availability}</p>
<input placeholder="Quantity"></input>
<br />
<button onClick={() => this.putInCart(ind)}>Add to Cart</button>
<br /><br /><br />
</div>
);
})
}
</div>
);
}
}
export default AddToCart;
当用户单击“添加到购物车”按钮时,我想获取用户在我的“putInCart()”方法中的数量文本字段中输入的数量。但我不知道该怎么做。任何帮助,将不胜感激。
JSON文件:-
{
"items": [
{
"name": "Item 1",
"price": "100",
"availability": "In Stock",
},
{
"name": "Item 2",
"price": "50",
"availability": "Out of Stock",
},
{
"name": "Item 3",
"price": "150",
"availability": "In Stock",
}
]
}
解决方案
您需要将用户写入的数量存储在组件状态的属性中,
- 使用初始空字符串创建状态
- 将输入值绑定到此状态属性
- 在每次值更改时,您都会更新状态值
- 现在你可以在组件中任何你想要的地方获取状态值
src/App.js
import React, { Component } from "react";
import "./styles.css";
import Items from './items';
class AddToCart extends Component {
constructor(props) {
super(props);
this.state = {
1: "",
2: "",
3: ""
};
this.handleChange = this.handleChange.bind(this);
}
handleChange(e) {
this.setState({ [e.target.name]: e.target.value });
}
putInCart(i) {
console.log(this.state[i]);
}
render() {
return (
<div>
{
Items.map((val, ind) => {
return (
<div key={ind}>
<p>Name : {val.name}</p>
<p>Price : {val.price}</p>
<p>Availability : {val.availability}</p>
<input placeholder="Quantity" name={ind} onChange={this.handleChange} value={this.state.inputValue}></input>
<br />
<button onClick={() => this.putInCart(ind)}>Add to Cart</button>
<br /><br /><br />
</div>
);
})
}
</div>
);
}
}
export default AddToCart;
src/items.js
export default [
{
"name": "Item 1",
"price": "100",
"availability": "In Stock",
},
{
"name": "Item 2",
"price": "50",
"availability": "Out of Stock",
},
{
"name": "Item 3",
"price": "150",
"availability": "In Stock",
}
]
推荐阅读
- php - 正则表达式 php 从不同组中的字符串中分离出一个确切的单词
- java - 输入:一个单词的字符串。打印给定字符串的所有重新排列而不重复。JAVA
- reactjs - React Hooks - 处理异步 api 调用
- botframework - 关于 Bot 示例 16.proactive-messages (nodejs SDK) 的问题
- bash - 在 bash 中启动多个 tmux 会话
- javascript - 如何停止传播下一个内联函数
- c++ - 多个条件变量相互调用函数
- excel - 更改范围的数字格式
- ubuntu - Ubuntu 19.10 出了点问题。我的终端无法正常工作
- assembly - 通过 EBP 和 ESP 清理了解 STDCALL 与 CDECL 的概念