来自对象数组的对象 - react- usestate

发布于 2025-02-11 05:29:09 字数 1121 浏览 1 评论 0原文

帮助我想在不覆盖的情况下增加状态的价值。当前,添加值时,数组会被覆盖。我想使用Usestate,并且想使用表单中的值。

import {useState} from 'react';

const initialState = {
    people: [
        {email: 'Jan'},
        {email: 'Izabela'},
        {email: 'Michael'}
    ] }

const StateModification = () => {

    const [names,setNames] = useState(initialState)

    const handleSubmit = (e) => {
        e.preventDefault(); 
    }

    const handleChange2 = (e) => {
        setNames({
            ...names,
            people: [{[e.target.name]: e.target.value}]
        })
    }

    return (
        <div>
            <form onSubmit={handleSubmit}>
                <label>E-mail</label>
                <input 
                    id='email' 
                    type='text' 
                    name='email'
                    value={names.email}
                    onChange={handleChange2}    
                />
                
                <button type='submit'>Add</button>
            </form>
        </div>`enter code here`
    ) }

export default StateModification;

help please I want to add value to state without overwriting. Currently, when adding a value, the array is overwritten. I want to use useState and I want to use the value from the form.

import {useState} from 'react';

const initialState = {
    people: [
        {email: 'Jan'},
        {email: 'Izabela'},
        {email: 'Michael'}
    ] }

const StateModification = () => {

    const [names,setNames] = useState(initialState)

    const handleSubmit = (e) => {
        e.preventDefault(); 
    }

    const handleChange2 = (e) => {
        setNames({
            ...names,
            people: [{[e.target.name]: e.target.value}]
        })
    }

    return (
        <div>
            <form onSubmit={handleSubmit}>
                <label>E-mail</label>
                <input 
                    id='email' 
                    type='text' 
                    name='email'
                    value={names.email}
                    onChange={handleChange2}    
                />
                
                <button type='submit'>Add</button>
            </form>
        </div>`enter code here`
    ) }

export default StateModification;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

许一世地老天荒 2025-02-18 05:29:09

我认为您需要在数据中添加电子邮件,然后单击“添加”按钮,将电子邮件存储在People变量中的以前数据中,因此我已经更新了您的代码,并且应该对您有用。

import {useState} from 'react';

const initialState = {
    people: [
        {email: 'Jan'},
        {email: 'Izabela'},
        {email: 'Michael'}
    ] }

const StateModification = () => {

    const [names,setNames] = useState(initialState)
    const [email,setEmail] = useState("")

    const handleSubmit = (e) => {
      e.preventDefault();
        setNames({
          people: [...names.people, { email }]
      })
    }

    const handleChange2 = (e) => {
      e.preventDefault();
      setEmail(e.target.value)
    }

    return (
        <div>
            <form onSubmit={handleSubmit}>
                <label>E-mail</label>
                <input 
                    id='email' 
                    type='text' 
                    name='email'
                    value={email}
                    onChange={handleChange2}    
                />
                
                <button type='submit'>Add</button>
            </form>
        </div>
    ) }

export default StateModification;

I think you need to add an email in your data and after click on add button that email will store in people variable with your previous data so i have update your code and it should work for you.

import {useState} from 'react';

const initialState = {
    people: [
        {email: 'Jan'},
        {email: 'Izabela'},
        {email: 'Michael'}
    ] }

const StateModification = () => {

    const [names,setNames] = useState(initialState)
    const [email,setEmail] = useState("")

    const handleSubmit = (e) => {
      e.preventDefault();
        setNames({
          people: [...names.people, { email }]
      })
    }

    const handleChange2 = (e) => {
      e.preventDefault();
      setEmail(e.target.value)
    }

    return (
        <div>
            <form onSubmit={handleSubmit}>
                <label>E-mail</label>
                <input 
                    id='email' 
                    type='text' 
                    name='email'
                    value={email}
                    onChange={handleChange2}    
                />
                
                <button type='submit'>Add</button>
            </form>
        </div>
    ) }

export default StateModification;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文