我如何在Reactjs中更改状态变量的值

Nickolas Melo de Oliveira

我有两个表,“ Member”和“ Address”是相关的。我的表单具有两个表的字段,并且我希望我的应用程序返回成员的id并在地址的外键中使用它,但是当我尝试通过post函数的响应来更改id_member的值时,它没有没有改变,它仍然没有价值。

    import React, { useState, useEffect } from 'react';
    import { Link, useHistory } from 'react-router-dom';
    import { FiArrowLeft } from 'react-icons/fi';

    import 'bootstrap/dist/css/bootstrap.min.css';
    import { Form, Col } from 'react-bootstrap';

    import api from '../../services/api';

    import './styles.css';

    export default function NewMember() {
        const [name, setName] = useState('');
        const [email, setEmail] = useState('');
        const [situation, setSituation] = useState('');
        const [birth, setBirth] = useState('');
        const [rg, setRg] = useState('');
        const [street, setStreet] = useState('');
        const [number, setNumber] = useState('');
        const [neighborhood, setNeighborhood] = useState('');
        const [city, setCity] = useState('');
        const [uf, setUf] = useState('');
        const [zip, setZip] = useState('');
        const [id_member, setId_member] = useState(0);


        const history = useHistory();

        const userId = localStorage.getItem('userId');

        async function handleNewMember(e) {
            e.preventDefault();
            const dataMember = {
                name,
                email,
                situation,
                birth,
                rg,
            };
            const dataAddress = {
                street,
                number,
                neighborhood,
                city,
                uf,
                zip,
                id_member,
            };
            try {
                const response = await api.post('members', dataMember, {
                    headers: {
                        Authorization: userId,
                    }
                })
                

                setId_member(response.data.id);
                await api.post('/address', dataAddress);
                history.push('/profile');
            } catch (err) {
                alert('Erro ao cadastrar integrante, tente novamente.')
            }


        }
        return (
            <div className="new-member-container">
                <div className="content">
                    <Form onSubmit={handleNewMember}>
                        <Form.Row className="space">
                            <Col xs={7}>
                                <Form.Label>Nome</Form.Label>
                                <Form.Control
                                    type="text"
                                    placeholder="João Alves da Silva"
                                    value={name}
                                    onChange={e => setName(e.target.value)}
                                />
                            </Col>
                            <Col>
                                <Form.Label>E-mail</Form.Label>
                                <Form.Control
                                    type="email"
                                    placeholder="[email protected]"
                                    value={email}
                                    onChange={e => setEmail(e.target.value)}
                                />
                            </Col>
                        </Form.Row>
                        <Form.Row className="space">
                            <Col xs={6}>
                                <Form.Label>Nascimento</Form.Label>
                                <Form.Control
                                    type="date"
                                    placeholder="24/01/2000"
                                    value={birth}
                                    onChange={e => setBirth(e.target.value)}
                                />
                            </Col>
                            <Col>
                                <Form.Label>RG</Form.Label>
                                <Form.Control
                                    placeholder="50.149.996-9"
                                    value={rg}
                                    onChange={e => setRg(e.target.value)}
                                />
                            </Col>
                        </Form.Row >
                        <Form.Row className="space">
                            <Col xs={6}>
                                <Form.Label>Rua</Form.Label>
                                <Form.Control
                                    placeholder="Rua Loefgren"
                                    value={street}
                                    onChange={e => setStreet(e.target.value)}
                                />
                            </Col>
                            <Col>
                                <Form.Label>Número</Form.Label>
                                <Form.Control
                                    placeholder="2109"
                                    value={number}
                                    onChange={e => setNumber(e.target.value)}
                                />
                            </Col>
                            <Col xs={4}>
                                <Form.Label>Bairro</Form.Label>
                                <Form.Control
                                    placeholder="Vila Clementino"
                                    value={neighborhood}
                                    onChange={e => setNeighborhood(e.target.value)}
                                />
                            </Col>
                        </Form.Row >
                        <Form.Row className="space">
                            <Col xs={4}>
                                <Form.Label>City</Form.Label>
                                <Form.Control
                                    placeholder="São Paulo"
                                    value={city}
                                    onChange={e => setCity(e.target.value)}
                                />
                            </Col>
                            <Col xs={2}>
                                <Form.Label>UF</Form.Label>
                                <Form.Control
                                    placeholder="SP"
                                    value={uf}
                                    onChange={e => setUf(e.target.value)}
                                />
                            </Col>
                            <Col xs={2}>
                                <Form.Label>CEP</Form.Label>
                                <Form.Control
                                    placeholder="04040-030"
                                    value={zip}
                                    onChange={e => setZip(e.target.value)}
                                />
                            </Col>
                            <Col>
                                <Form.Label>Situação</Form.Label>
                                <Form.Control
                                    value={situation}
                                    placeholder="Ativo"
                                    onChange={e => setSituation(e.target.value)}>
                                </Form.Control>
                            </Col>

                        </Form.Row>
                        <button className="button" type="submit">
                            Cadastrar
                        </button>

                        <Link className="back-link" to="/profile">
                            <FiArrowLeft size={16} color="#01A8E5" />
                            Voltar para Home
                        </Link>
                    </Form>
                </div>
            </div>
        );
    }

我的控制器:

const connection = require('../database/connection');
module.exports = {
    async index(request, response) {
        const { page = 1 } = request.query;

        const [count] = await connection('member').count();

        const members = await connection('member')
            .join('address', 'id_member', '=', 'member.id')
            .limit(30)
            .offset((page - 1) * 30)
            .select([
                'member.*',
                'address.street',
                'address.number',
                'address.neighborhood',
                'address.city',
                'address.uf',
                'address.zip']);

        response.header('X-Total-Count', count['count(*)']);

        return response.json(members);
    },

    async create(request, response) {
        const { name, email, situation, birth, rg } = request.body;

        const [id] = await connection('member').insert({
            name,
            email,
            situation,
            birth,
            rg,
        });

        return response.json({ id });
    },
    async delete(request, response) {
        const { id } = request.params;

        const members = await connection('member')
            .where('id', id)
            .select('id')
            .first();

        if (!members) {
            return response.status(404).json({ error: 'Operation Not Found.' });
        }
        else {
            await connection('member').where('id', id).delete();

            return response.status(204).send();
        }
    }
};
Liu Lei
async function handleNewMember(e) {
        e.preventDefault();
        const dataMember = {
            name,
            email,
            situation,
            birth,
            rg,
        };
        const dataAddress = {
            street,
            number,
            neighborhood,
            city,
            uf,
            zip
        };
        try {
            const response = await api.post('members', dataMember, {
                headers: {
                    Authorization: userId,
                }
            })
            const id_member = response.data.id
            setId_member(id_member);
            // `setId_member` or setXxx is async. so use the `id_member` directly. or you will always get it's previous value
            dataAddress.id_member = id_member
            await api.post('/address', dataAddress);
            history.push('/profile');
        } catch (err) {
            alert('Erro ao cadastrar integrante, tente novamente.')
        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在StyleSheet中访问状态变量?

来自分类Dev

如何在Keras中重置状态变量?

来自分类Dev

如何在此代码中访问我的状态变量?

来自分类Dev

如何在状态变量中设置下拉列表的值?

来自分类Dev

如何在组件之间传递状态变量

来自分类Dev

如何在React中更新数组中的状态变量?

来自分类Dev

如何在React Native中访问类外部的类的状态变量?

来自分类Dev

如何在React Route的父级中设置状态变量?

来自分类Dev

关于如何在render()中引用状态变量的真正快速的问题-React Native

来自分类Dev

React:如何通过匹配另一个状态变量的值来修改状态变量

来自分类Dev

如何使状态变量线程安全

来自分类Dev

如何使状态变量线程安全

来自分类Dev

什么是joomla中的状态变量

来自分类Dev

ReactJS-状态变量行为异常

来自分类Dev

迭代状态变量

来自分类Dev

使setState()更改整个类的状态变量

来自分类Dev

编辑后如何显示来自CoreData实体的值作为状态变量

来自分类Dev

为什么我的AppWidgetProvider的onReceive中的这些状态变量为null?

来自分类Dev

我可以访问 state 中的其他状态变量吗?

来自分类Dev

状态变量在功能组件中具有错误的值

来自分类Dev

从useCallback访问状态变量时,值不会更新

来自分类Dev

如何在Go中使用未共享的有状态变量?

来自分类Dev

如何在 React Native 的导航项中使用状态变量

来自分类Dev

更新状态变量而不更改渲染时分配给它们的其他状态的值

来自分类Dev

如何通过SwiftUI中的状态变量对形状进行动画处理?

来自分类Dev

如何使用useSelector访问功能组件中的redux存储状态变量?

来自分类Dev

如何保存-恢复所有opengl状态变量

来自分类Dev

C库如何存储状态变量?

来自分类Dev

如何追踪以太坊状态变量的历史?

Related 相关文章

  1. 1

    如何在StyleSheet中访问状态变量?

  2. 2

    如何在Keras中重置状态变量?

  3. 3

    如何在此代码中访问我的状态变量?

  4. 4

    如何在状态变量中设置下拉列表的值?

  5. 5

    如何在组件之间传递状态变量

  6. 6

    如何在React中更新数组中的状态变量?

  7. 7

    如何在React Native中访问类外部的类的状态变量?

  8. 8

    如何在React Route的父级中设置状态变量?

  9. 9

    关于如何在render()中引用状态变量的真正快速的问题-React Native

  10. 10

    React:如何通过匹配另一个状态变量的值来修改状态变量

  11. 11

    如何使状态变量线程安全

  12. 12

    如何使状态变量线程安全

  13. 13

    什么是joomla中的状态变量

  14. 14

    ReactJS-状态变量行为异常

  15. 15

    迭代状态变量

  16. 16

    使setState()更改整个类的状态变量

  17. 17

    编辑后如何显示来自CoreData实体的值作为状态变量

  18. 18

    为什么我的AppWidgetProvider的onReceive中的这些状态变量为null?

  19. 19

    我可以访问 state 中的其他状态变量吗?

  20. 20

    状态变量在功能组件中具有错误的值

  21. 21

    从useCallback访问状态变量时,值不会更新

  22. 22

    如何在Go中使用未共享的有状态变量?

  23. 23

    如何在 React Native 的导航项中使用状态变量

  24. 24

    更新状态变量而不更改渲染时分配给它们的其他状态的值

  25. 25

    如何通过SwiftUI中的状态变量对形状进行动画处理?

  26. 26

    如何使用useSelector访问功能组件中的redux存储状态变量?

  27. 27

    如何保存-恢复所有opengl状态变量

  28. 28

    C库如何存储状态变量?

  29. 29

    如何追踪以太坊状态变量的历史?

热门标签

归档