Динамические поля ввода в таблице React JS - PullRequest
0 голосов
/ 02 ноября 2019

Я пытаюсь добавить динамические поля в реагирующую таблицу JS, таблица получает новую строку каждый раз, когда пользователь выбирает продукт из выпадающего списка, тогда в строке должно быть три динамических поля ввода, я не могу понять,как управлять их стоимостью и onChange. Код прилагается.

Код для управления состоянием.

this.state = {
      quantity: [],
      costPrice: [],
      total: [],
      key: 0,
      supplierId: "",
      productId: "",
      addedProducts: []
    };

componentWillReceiveProps(nextProps) {
    if (nextProps.product.productId > 0) {
      let quantity = [...this.state.quantity, "1"];
      //quantity.concat("0");
      if (this.state.key == 0) {
        this.setState({
          addedProducts: this.state.addedProducts.concat(nextProps.product),
          quantity: quantity
        });
      } else {
        this.incrementKey();
        this.setState({
          addedProducts: this.state.addedProducts.concat(nextProps.product),
          quantity: quantity
        });
      }
    }
  }

  incrementKey() {
    this.setState(state => {
      return { key: state.key + 1 };
    });
  }

  onChange(event, key) {
    const obj = event.target.value;
    alert(this.state.quantity.length);
    if ([event.target.name] == "quantity") {
      //var total = event.target.value * this.state.costPrice;
      let quantity = [...this.state.quantity];
      quantity[key] = obj;
      this.setState({ quantity });
    } else if ([event.target.name] == "costPrice") {
      var total = this.state.quantity * event.target.value;
    }

    // this.setState({ [event.target.name]: event.target.value, total: total });
  }

Код для просмотра Порция

{addedProducts.map(object => (
                        <TableRow key={object.productId}>
                          <TableCell>{object.sku}</TableCell>
                          <TableCell>{object.productName}</TableCell>
                          <TableCell>
                            <TextField
                              id={"quantityText" + object.sku}
                              name="quantity"
                              value={quantity[0]}
                              style={{ width: "60px" }}
                              onChange={e => onChange(e, 0)}
                              inputProps={{ "aria-label": "bare" }}
                            />
                          </TableCell>
                          <TableCell>
                            <TextField
                              id="costPriceText"
                              name={"costPrice" + object.sku}
                              value={costPrice}
                              style={{ width: "70px" }}
                              onChange={onChange}
                              inputProps={{ "aria-label": "bare" }}
                            />
                          </TableCell>
                          <TableCell>
                            <TextField
                              id="totalText"
                              name={"total" + object.sku}
                              value={total}
                              style={{ width: "80px" }}
                              onChange={onChange}
                              inputProps={{ "aria-label": "bare" }}
                            />
                          </TableCell>
                        </TableRow>
                      ))}
                    </TableBody>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...