Отображение значений на основе поиска с уникальным идентификатором - ReactJS - PullRequest
0 голосов
/ 09 января 2020

Я использую reactjs, nodejs и mysql .., которые выбирают данные из базы данных. Сейчас я пытаюсь показать строку только на основе значений поиска, возможно, не включая кнопку отправки (например, поиск в Google)

, вот моя ссылка NodeJS, поэтому если я введу http: \ localhost \ productlist \ 3, тогда он будет отображать 3-й товар только в NodeJS, но я хочу реализовать такую ​​же функцию в reactjs также через searchbox

app.get("/productslist/:idaddproducts", (req, res) => {
  const id = req.params.idaddproducts
  console.log(id)
  connection.query("SELECT * FROM `addproducts` where idaddproducts = ? ",id,(err, rows) => {
    if (!err) console.log(rows), res.json({ data: rows });
    //data variable is not mandatory but inorder to pass the result we need it
    else console.log(err);
    // connection.end()
  });
});

и вот моя реакция js Код

export default function MaterialTableDemo() {
  const initialState = {
    idaddproducts: "",
    productName: "",
    productId: "",
    productBrand: "",
    productQuantity: "",
    productPrice: "",
    productType: ""
  };
  const [poName, pnName] = React.useState(initialState);

  const handleName = e => {
    e.preventDefault();
    pnName({ ...poName, [e.target.name]: e.target.value });
    console.log(poName);
  };

  async function handleTable(e) {
    const res = await fetch("http://localhost:4000/productslist/:id");
    const data = await res.json();
    pnName(data.data);
    console.log(data.data);
  }

  useEffect(() => {
    handleTable();
  }, []);

  const classes = useStyles();
  return (
    <form className={classes.root} noValidate autoComplete="off" align="center">
      <div className={classes.formGroup}>
        <FormControl>
          <Input
            type="search"
            label="Product ID"
            variant="outlined"
            size="small"
            placeholder="Enter Product ID"
            value={poName.idaddproducts}
            name="idaddproducts"
            onChange={handleName}
          />
        </FormControl>
        {poName.length &&
          poName.map(v => {
            return (
              <h4 key={v.idaddproducts}>
                {v.productName}
                {v.productId}
                {v.productBrand}
                {v.productQuantity}
                {v.productPrice}
                {v.productType}
              </h4>
            );
          })}
      </div>
    </form>
  );
}

Любая помощь будет высоко ценится

Ответы [ 3 ]

1 голос
/ 09 января 2020

Check this, this will work fine Отметьте это, это будет работать нормально, если нет, то возникнет другая проблема

1 голос
/ 09 января 2020

теперь работает ... вот кусок кода ... спасибо этим двум народам

export default function MaterialTableDemo() {
  const initialState = {
    idaddproducts: "",
    productName: "",
    productId: "",
    productBrand: "",
    productQuantity: "",
    productPrice: "",
    productType: ""
  };
  const [poName, pnName] = React.useState(initialState);

  const handleName = e => {
    const idAddProducts = e.target.value;
    e.preventDefault();
    pnName({ ...poName, idaddproducts: idAddProducts });
    handleTable(idAddProducts);
    console.log(poName);
  };

  async function handleTable(idAddProducts) {
    const id = poName.idaddproducts;
    const res = await fetch(
      "http://localhost:4000/productslist/" + idAddProducts
    );
    const data = await res.json();
    pnName(data.data);
    console.log(data.data);
  }

  useEffect(() => {
    handleTable();
  }, []);

  const classes = useStyles();
  return (
    <form className={classes.root} noValidate autoComplete="off" align="center">
      <div className={classes.formGroup}>
        <FormControl>
          <Input
            type="search"
            label="Product ID"
            variant="outlined"
            size="small"
            placeholder="Enter Product ID"
            value={poName.idaddproducts}
            name="idaddproducts"
            onChange={handleName}
          />
          {poName.length &&
            poName.map(v => {
              return (
                <h4 key={v.idaddproducts}>
                  {v.productName}
                  {v.productId}
                  {v.productBrand}
                  {v.productQuantity}
                  {v.productPrice}
                  {v.productType}
                </h4>
              );
            })}
        </FormControl>
      </div>
    </form>
  );
}

См. ScreenShot

1 голос
/ 09 января 2020
async function handleTable(e) {
    const id = poName.idaddproducts;
    const res = await fetch("http://localhost:4000/productslist/" + id);
    const data = await res.json();
    pnName(data.data);
    console.log(data.data);
}

useEffect(() => {
    handleTable();
}, [poName.idaddproducts]);

Попробуйте использовать вот так.

...