Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何在另一个非子组件中使用组件状态作为道具?_Reactjs - Fatal编程技术网

Reactjs 如何在另一个非子组件中使用组件状态作为道具?

Reactjs 如何在另一个非子组件中使用组件状态作为道具?,reactjs,Reactjs,我在一个组件中有一个表单,当使用useState提交时,它会将项添加到数组中。我想在另一个组件的选择输入中使用这些数组值作为选项。问题是没有亲子关系。最好的办法是什么 生成的组件处理数组: import React, {useState, useEffect} from 'react'; import {useForm} from 'react-hook-form'; import Button from 'react-bootstrap/Button'; import Form from 'r

我在一个组件中有一个表单,当使用useState提交时,它会将项添加到数组中。我想在另一个组件的选择输入中使用这些数组值作为选项。问题是没有亲子关系。最好的办法是什么

生成
的组件处理
数组:

import React, {useState, useEffect} from 'react';
import {useForm} from 'react-hook-form';
import Button from 'react-bootstrap/Button';
import Form from 'react-bootstrap/Form';

function AddProcessForm () {

    const {register, handleSubmit, watch, errors} = useForm();
    const [processes, setProcesses] = useState([]);
    const onSubmit = data => {
        setProcesses(processes => [...processes, data])
        console.log(data)
        document.getElementById("process-entry-form").reset();
        }

    useEffect(() =>{
        console.log(processes);
    })

    return (
        <Form id="process-entry-form" onSubmit={handleSubmit(onSubmit)}>
          <Form.Group controlId="" className="mx-2">
            <Form.Label>Add Process</Form.Label>
            <Form.Control name="processname" type="text" placeholder="Enter Process Name" ref={register}/>
          </Form.Group>
          <Button variant="primary" type="submit" className="mb-2">
            Submit
          </Button>
        </Form>
    )
}

export default AddProcessForm;

我可能会在一个共同的祖先组件中处理这个问题。如果这些组件不相关,或者在父/子链中彼此相距很远,我可能会使用状态管理库(如redux)来处理这种“全局使用”状态。@jdbstillmembersmonica如何从组件传递状态?您不需要。您在父对象中保留状态并将其传递给子对象。您可以使用事件来更改父级中的状态。但是如果这些组件彼此相距很远,那么您最好还是接受@NicolasSEPTIER的建议。@jdbstillMembersMonica实际上只有两个表单,其中一个表单的输出提供另一个表单的选择列表。因为它们是一起显示的,所以我可以将它们放在容器组件中。然后我将使用
container
来保存状态,
form1
创建一个事件来更改状态,
form2
将状态用作道具。这有意义吗?
import React from 'react';
import Form from 'react-bootstrap/Form';

function ActivitytoProcessInput () {

    return (
        <Form.Group controlId="" className="mx-2">
        <Form.Label>Belongs to Process</Form.Label>
            <Form.Control as="select">
                <option value="" selected>Select a Process</option>
                <option>1</option>
                <option>2</option>
                <option>3</option>
                <option>4</option>
                <option>5</option>
            </Form.Control>
        </Form.Group>
    )
}

export default ActivitytoProcessInput;