首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >useState替换当前元素

useState替换当前元素
EN

Stack Overflow用户
提问于 2022-07-28 10:20:54
回答 2查看 32关注 0票数 0

我有两个按钮。Add1Add2

Add2按钮在Test中无法工作。我做错什么了。我不太熟悉反应。

代码语言:javascript
复制
import React, { useState, useEffect } from "react";
import ReactDOM from "react-dom";
import { observer } from "mobx-react-lite";

function App() {
  const [component, setComponent] = useState([]);

  useEffect(() => {});

  const Test = observer(() => {
    return (
      <div>
        <p>
          Test -
          <button onClick={() => setComponent([...component, Test])}>
            Add 2
          </button>
        </p>
      </div>
    );
  });

  return (
    <div>
      {component.map((Input, index) => (
        <Input key={index} />
      ))}
      <button onClick={() => setComponent([...component, Test])}>Add 1</button>
    </div>
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

代码框:https://codesandbox.io/s/react-hooks-useeffect-forked-ml77pz

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-28 10:29:18

如果不保留引用,则不应该在另一个组件中创建组件!

将其移出应用程序并添加支持setComponent

代码语言:javascript
复制
const Test = observer(({setComponent}) => {
  return (
    <div>
      <p>
        Test -
        <button onClick={() => setComponent(component => [...component, Test])}>
          Add 2
        </button>
      </p>
    </div>
  );
});

function App() {
   ...
}

然后,在呈现时,将“setComponent”传递给它:

代码语言:javascript
复制
<Input key={index} setComponent={setComponent} />
票数 1
EN

Stack Overflow用户

发布于 2022-07-28 10:29:50

您尚未为此递归呈现定义基本大小写。

代码语言:javascript
复制
 const Test = observer(() => {
    return (
      <div>
        <p>
          Test -
          <button onClick={() => setComponent([...component, Test])}>
            Add 2
          </button>
        </p>
      </div>
    );
  });
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73151197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档