【问题标题】:React.js using form input in another componentReact.js 在另一个组件中使用表单输入
【发布时间】:2022-01-19 08:23:15
【问题描述】:

所以我正在学习如何在我的 React 应用项目中使用表单输入。 我不太确定该怎么做,道具似乎并没有真正削减它。 因此,如果我有两个组件,一个带有表单,另一个我只想显示输入。 我不想一次渲染这两个组件,而是希望将用户重定向到显示输入的另一个视图。 下面是简单表单的代码。

import React from 'react'
import { useState } from 'react';
import { useNavigate } from 'react-router-dom';
import Second from '../view/second/Second';

    const Form = () => {
    const navigate = useNavigate();

    const [namn, setNamn] = useState('');
    const [personNr, setPersonNr] = useState('');
    const [datum, setDatum] = useState('');
    const [planbok, setPlanbok] = useState('');

    
    return (

        <div>
            <form>
                <div>
                <input type="text" id="namnField" required value={namn} 
    onChange={(n) => setNamn(n.target.value)} placeholder='Namn'></input>
                </div>
                <div>
                <input type="text" id="personNrField" required value={personNr} 
    onChange={(pn) => setPersonNr(pn.target.value)} placeholder='Personnr'></input>
                </div>
                <div>
                <input type="text" id="datumField" required value={datum} 
    onChange={(d) => setDatum(d.target.value)} placeholder='Datum'></input>
                </div>
                <div>
                <input type="text" id="planbokField" required value={planbok} 
    onChange={(p)=>setPlanbok(p.target.value)} placeholder='Plånbokadress'></input>
                </div>
                <button type="submit" id="inputForm"onSubmit {navigate('/second')}>Enter</button>
            </form>
        </div>
    )
}

export default Form

这是我要显示表单输入的组件:

import React from 'react'
import Form from '../../form/Form'

const Second = ({namn, datum, personNr, planbok}) => {
    return (
        <div>
            <p>{namn}, {datum}, {personNr}, {planbok}</p>
        </div>
    )
}

export default Second

如您所见,我尝试使用道具,但这不起作用。 当然,我可以渲染组件中调用的组件,并且可以使用表单输入进行填充。 但这不是我想要实现的,我希望当我在不同的视图中渲染时显示来自表单输入的变量。

我将如何实现这一点,我应该使用 Ajax,钩子 useContext 吗?有没有其他方法可以更好地处理这种情况? 在此先感谢您的时间。 问候/斯万特。

【问题讨论】:

  • 我会将useState 上移一级,并将setNamn 等向下传递给Form(作为道具)并将namn 等向下传递给Second 作为道具。
  • 试试吧!谢谢! :)

标签: javascript html node.js reactjs


【解决方案1】:

用 useContext 解决了这个问题。 使用了这个 youtube 视频中关于这个主题的原则: https://www.youtube.com/watch?v=lhMKvyLRWo0&t=342s

我认为按照 MrPickles 作为对我第一篇文章的回答所写的那样做可能是一种更好的做法。

【讨论】:

  • 鼓励链接到外部资源,但请在链接周围添加上下文,以便您的其他用户了解它是什么以及为什么存在。始终引用重要链接中最相关的部分,以防目标站点无法访问或永久离线。
  • 在这种情况下,如果您像我一样是新手,我认为您最好跟随整个视频。 :)
  • 我不同意,抱歉。这是来自 SO 指南,请阅读How To Answer Well
  • 我会阅读并相应地编辑我的答案。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-19
  • 1970-01-01
  • 2018-12-20
  • 2021-08-01
  • 2014-01-18
  • 2017-05-05
  • 1970-01-01
相关资源
最近更新 更多