单击按钮后,React中的组件重复

贾纳坎蒂

REACT问题-单击按钮后,我想执行类似的操作来启动创建新组件的功能。此外,我希望div元素及其内容在每次单击按钮时出现。(就我而言,是我自己的组件)

例如,当我想创建问卷并添加问题时,我需要一个按钮让我为该问题添加输入。您知道,重复组件。

“ REACT.CreateElement”?哪个会循环出现?或者,也许您知道其他方法吗?

我尝试了CreateElement,customElements.define(),但我不知道这是正确的方法。现在,我训练使用。你能帮助我吗?预先感谢您,在我的代码下方:

**import React, { useState } from 'react';
import ReactDOM from 'react-dom';
import DV from 'components/dataView/DataView'
import FieldsWrapper from 'components/fieldsWrapper/FieldsWrapper'
import FormMetaObject from 'components/form/components/form/FormMetaObject'

import Card from "components/card/Card"
import {Combobox} from  'components/form/components/combobox/Combobox'
import InputText from 'components/form/components/input/InputText'
import InputDateTime from 'components/form/components/input/InputDateTime/InputDateTime'
import { Checkbox } from 'components/form/Form';
import EnumListView from 'components/form/components/enumList/EnumListView'
import Button from 'components/button/Button';

const AddQ = () => {
    const [numberOfQuestion, setNumberOfQuestion] = useState(0);
 
 
    return <div>
       { setNumberOfQuestion(number => number++)}
       {console.log("FEUF")}
       {Array(numberOfQuestion).fill("").map((_, id) => <Questionnaire />)}
    </div>
}


const Questionnaire = ({data}) => {
    const {title} = data || {}

    return(
        <div>{`Tytuł: ${title}`}</div>
    )
}

const DataProvider = ({children}) => {
   const [state, setState] = React.useState([]);
   const url = "https://60226fc4ae8f8700177df76f.mockapi.io/api/v1/users/1/questionnaire"
   fetch(url)
   .then(response => response.json())
   .then(data => setState(data));

  return (
     
   <FormMetaObject
   
            data={{
                meta: {
                    dataType: 'text',
                    attributes: {
                        Login: {
                            name: 'Login',
                            label: 'adam',
                            type: 'String',
                            validations: [{ type: 'Required' }]
                        },
                    }
                },
                data: [
                    {
                        attributes: {
                        }
                    }
                ]
            }}
        >
 {children}
        </FormMetaObject>
  )}

function Content() {
   const [state, setState] = React.useState([]);
   const url = "https://60226fc4ae8f8700177df76f.mockapi.io/api/v1/users/1/questionnaire"
   fetch(url)
   .then(response => response.json())
   .then(data => setState(data));

   const values = [
        { id: 1, value: 'marketing' },
        { id: 2, value: 'IT' },
        { id: 3, value: 'tłumacze' },
        { id: 4, value: 'księgowość' },
        { id: 5, value: 'zarządzanie ' }
    ]
    const selected = []
    function onChange() { }

   return(
      <Card>
            <h4>Nowa ankieta</h4>
            <FieldsWrapper>
                <InputText name="Tytuł" />
                <InputText name="Opis" />
                <InputDateTime name ="Data rozpoczęcia ankiety"/>
                <InputDateTime name ="Data zakończenia ankiety"/>
            </FieldsWrapper>
            <FieldsWrapper>
                <Checkbox name ="Obowiązkowa"/>
                <Checkbox name ="Anonimowa"/>
                <Checkbox name ="Czy ankieta ma być wysłana do autora ankiety? "/>
            </FieldsWrapper>
                <EnumListView name ="do kogo ma trafić ankieta" values={values} selected={selected} onChange={onChange} />
            <FieldsWrapper>
                <Button color="link" onClick={() =>AddQ()}>Add</Button>
            </FieldsWrapper>
            <div id="ankieta" ></div>
     </Card>
         )}**
它是

这里有很多错误。

首先,要小心在组件主体中执行的操作。这将在每次组件渲染时运行。因此,首先将您包装在fetchuseEffect

useEffect(() => { ... fetch logic}, []) // < empty dependency array

这将确保代码在组件渲染时仅运行一次

另外,如果您基于承诺的回报来更新状态(如您在此处),则应在设置状态之前检查组件是否仍在安装中。您可以自己执行此操作,或者为此提供库(react-use)。

接下来...重复组件,这是基本且常见的用例。最常见的是,将问题表示为数组,然后循环遍历以生成组件。一个非常人为的例子:

const listOfQuestions = [
  "What time is it?",
  "Can I ask a follow up?"
]

listOfQuestions.map((question, index) => (
  <Question key={index}>{question}</Question>
))

这将呈现<Question />与数组中一样多的组件listOfQuestions这可能是具有更复杂结构的对象数组,但是概念是相同的。您只需遍历一个数组并有条件地渲染您的组件。当您执行此操作时,每个组件都需要一个唯一的key道具,以便React知道在重新渲染时该怎么做。

该数组listOfQuestions可以是useState()您动态更新的有状态值()。当您执行此操作时,渲染的组件将更新以反映数组中的新值。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在React中单击按钮时显示组件

在 React 中单击另一个组件中的按钮后如何显示 Modal?

单击 React.js 中的引导模式按钮后如何重新渲染组件

React-单击按钮后,根据用户输入的文本更新类组件中的状态

使用 React 单击按钮后切换到不同的组件

在vue组件中单击“保存”按钮后,如何关闭模态?

使用 React Router 在 React 中单击按钮时隐藏组件

如何在React中的按钮单击上渲染组件?

在React Native中单击按钮时如何渲染组件

如何在 React Hooks 中的单击按钮上显示组件?

在React Native中单击事件后渲染动态组件

提取后在react组件中获取重复元素

单击后隐藏 React 按钮

单击按钮后重复重新粉刷面板

反应:单击按钮后重新渲染组件

当用户单击按钮时,如何保存可重复使用的React组件?

如何在 React 中单击按钮后渲染 YouTube 视频?

单击后如何在React Native中禁用按钮

在react js中单击按钮后如何模糊背景

单击第一个按钮后,React组件不会更新

使用React-Hooks单击按钮后如何显示不同的组件?

React 组件状态在按钮单击时设置后不会更改

单击另一个组件中的按钮时,如何显示/隐藏React组件?

单击按钮组件后应呈现 EditChannel 组件应呈现

单击按钮后隐藏组件(登录)并显示其他组件

单击按钮如何打印React组件?

在angular 4中,我如何制作可重复使用的按钮组件,当单击该按钮时可以启用微调器

单击按钮后,模态主体不会在 html 中呈现组件

单击按钮后,我无法删除CRUD应用程序中的组件