Why am i POST a lot of unwanted data?

Viewed 57

I'm kind of new with java and ReactJS and I have a big issue where when I tried to post my data, it posted a lot of unwanted data like rendering the whole table.

My console.log() printed this :

location_dest_id: 2
location_id: 1
origin: "test3"
picking_type_id: 1
stock_move_ids: Array(1)
    0: 
    altKey: false
    bubbles: true
    button: 0
    buttons: 0
    cancelable: true
    clientX: 317
    clientY: 652
    ctrlKey: false
    currentTarget: null
    defaultPrevented: false
    demand: "12"
    detail: 1
    done: "0"
    eventPhase: 3
    getModifierState: ƒ modifierStateGetter(keyArg)
    isDefaultPrevented: ƒ functionThatReturnsFalse()
    isPropagationStopped: ƒ functionThatReturnsFalse()
    isTrusted: true
    metaKey: false
    movementX: 0
    movementY: 0
    nativeEvent: PointerEvent {isTrusted: true, pointerId: 1, width: 1, 
    height: 1, pressure: 0, …}
    pageX: 317
    pageY: 754
    product_tmpl_id: 9
    product_uom: "1"
    relatedTarget: null
    screenX: 317
    screenY: 723
    shiftKey: false
    target: span
    timeStamp: 203547.59999990463
    type: "click"
    view: Window {window: Window, self: Window, document: document, name: '', location: Location, …}
    _reactName: "onClick"
    _targetInst: null   


From what I understand, the error is when I tried to pass "stock_move_ids" nested data, it POST so much data as like the console.log() above. What it should be passed is like this :

[
  {
    "date":"02-09-2022",
    "origin":"test2",
    "picking_type_id":2,
    "location_id":1,
    "location_dest_id":2,
    "stock_move_ids":
    [
      {
        "demand":12,
        "done":0,
        "product_uom":1,
        "product_tmpl_id":18
        
      }
    ]
  }
]

Is there any way to solve my problem? My code is based on this template : https://codesandbox.io/s/j0opp

Here's my code looks like :

Parent

import React, { useEffect, useContext } from "react";
import { Button, Form, Input, DatePicker, Select } from 'antd';

import { Stockmovetable } from "./Stockmovetable";
import { AppContext } from '../../../context/Appcontext'

const Stockpickingnew = ({ title }) => {

  const { Function, State } = useContext(AppContext)
  const { fetchDataPickingType, fetchDataLocation, fetchDataPupuk, option, stock_move_ids, StockPick, StockPickFailed } = Function
  const { dateFormat, dataPupuk, dataStockLocation, dataStockPickingType } = State

  useEffect(() => {
    
    fetchDataPickingType()
    fetchDataLocation()
    fetchDataPupuk()

  }, [])


  return (
    <>
      <div className='new'>
        <div className="top">
          <h1>{title}</h1>
        </div>
        <div className="bottom">

          <div className="stockPicking">
            <Form
              name="stockPickings"
              layout="vertical"
              onFinish={StockPick}
              onFinishFailed={StockPickFailed}
              autoComplete="off"
            >

              <div className="left">
                <Form.Item
                  label="Origin :"
                  name='origin'
                >
                  <Input placeholder="Origin" />
                </Form.Item>
                <Form.Item
                  label="Picking Type :"
                  name='picking_type_id'
                >
                  <Select
                    placeholder="Picking Type"
                    options={dataStockPickingType.map(e => ({label: e.name, value: e.id}))}
                  />
                </Form.Item>
                <Form.Item
                  label="Date :"
                  name='date'
                >
                  <DatePicker
                    format={dateFormat}
                  />
                </Form.Item>
              </div>

              <div className="right">
                <Form.Item
                  label="Location :"
                  name='location_id'
                >
                  <Select
                    placeholder="Tujuan Awal"
                    options={dataStockLocation.map(e => ({label: e.name, value: e.id}))}
                  />
                </Form.Item>
                <Form.Item
                  label="Destination :"
                  name='location_dest_id'
                >
                  <Select
                    placeholder="Tujuan Akhir"
                    options={dataStockLocation.map(e => ({label: e.name, value: e.id}))}
                  />
                </Form.Item>
              </div>

              <div className="stockMove">

              <Form.List name="stock_move_ids">
                {(stock_move_ids, { add, remove }) => {
                  return <Stockmovetable stock_move_ids={stock_move_ids} option={option} add={add} remove={remove} dataPupuk={dataPupuk} />;
                }}
              </Form.List>

              </div>

              <Form.Item>
                <Button type="primary" htmlType="submit">
                  Submit
                </Button>
              </Form.Item>
            </Form>
          </div>

        </div>
      </div>
    </>
  )
}

export default Stockpickingnew

Child

import React from "react";
import { Form, Input, Button, Table, Select } from "antd";
import { PlusOutlined, MinusOutlined } from "@ant-design/icons";

const { Column } = Table;

export const Stockmovetable = props => {
    const { stock_move_ids, add, remove, dataPupuk, option } = props;

    return (

            <Table
                dataSource={stock_move_ids}
                pagination={false}
                footer={() => {
                    return (
                        <Form.Item>
                            <Button onClick={add}>
                                <PlusOutlined /> Add field
                            </Button>
                        </Form.Item>
                    );
                }}
            >
                <Column
                    dataIndex={"product_tmpl_id"}
                    title={"Nama Produk"}
                    render={(value, row, index) => {
                        return (
                            <Form.Item name={[index, "product_tmpl_id"]}>
                                <Select
                                    placeholder="Produk"
                                    options={dataPupuk.map(e => ({ label: e.name, value: e.id }))}
                                />
                            </Form.Item>
                        );
                    }}
                />
                <Column
                    dataIndex={"demand"}
                    title={"Demand"}
                    render={(value, row, index) => {
                        // console.log(row);
                        return (
                            <Form.Item name={[index, "demand"]}>
                                <Input
                                    placeholder="Demand"
                                />
                            </Form.Item>
                        );
                    }}
                />
                <Column
                    dataIndex={"done"}
                    title={"Done"}
                    render={(value, row, index) => {
                        return (
                            <Form.Item name={[index, "done"]}>
                                <Select
                                    placeholder="Tujuan Akhir"
                                    options={option}
                                />
                            </Form.Item>
                        );
                    }}
                />
                <Column
                    dataIndex={"product_uom"}
                    title={"product_uom"}
                    render={(value, row, index) => {
                        return (
                            <Form.Item name={[index, "product_uom"]}>
                                <Input
                                    placeholder="product_uom"
                                />
                            </Form.Item>
                        );
                    }}
                />
                <Column
                    title={"Action"}
                    render={(value, row, index) => {
                        return (
                            <React.Fragment>
                                <Button
                                    icon={<MinusOutlined />}
                                    shape={"circle"}
                                    onClick={() => remove(row.name)}
                                />
                            </React.Fragment>
                        );
                    }}
                />
            </Table>
    

    );
};

Context

export const AppContext = createContext()

export const AppProvider = props => {

    const Navigate = useNavigate()
    const dateFormat = ['DD-MM-YYYY'];


    const StockPick = (values) => {
        console.log('Success:', values);

        let stockpick = [{
            date: moment(values.date).format("DD-MM-YYYY"),
            origin: values.origin,
            picking_type_id: values.picking_type_id,
            location_id: parseInt(values.location_id),
            location_dest_id: parseInt(values.location_dest_id),
            stock_move_ids: [
                {
                    demand: parseInt(values?.stock_move_ids?.[0]?.demand),
                    done: parseInt(values?.stock_move_ids?.[0]?.done),
                    product_uom: parseInt(values?.stock_move_ids?.[0]?.product_uom),
                    product_tmpl_id: values?.stock_move_ids?.[0]?.product_tmpl_id,
                },
            ],
        }];

        let params = JSON.stringify(stockpick)

        console.log(params)

        axios.post('http://127.0.0.1:5000/api/stockpickings', params, { headers })
            .then(() => {
                Navigate('/')
            })
            .catch(error => {
                if (error.response) {
                    console.log(error.response);
                }
            });

    };

}

I think this is all I can provide / needed to fix my codings, if there's anything I need to add and or fix, please tell me. Thank you.

1 Answers

Okay after some hours tries as the comment above, i think all i need to do is just not making the body as dataindex.

from :

<Form.List name="stock_move_ids">
     {(stock_move_ids, { add, remove }) => {
       return <Stockmovetable stock_move_ids={stock_move_ids} option={option} add={add} remove={remove} dataPupuk={dataPupuk} />;
     }}
</Form.List>

to

<Form.List name="stock_move_ids">
     {(stock_move, { add, remove }) => {
       return <Stockmovetable stock_move_ids={stock_move_ids} option={option} add={add} remove={remove} dataPupuk={dataPupuk} />;
     }}
</Form.List>

Thank you very much for the helps!

Related