当前位置: 首页 > 知识库问答 >
问题:

如何正确显示材质UI本机选择并使用状态挂钩更改选择

宁弘亮
2023-03-14

这里是代码沙箱https://codesandbox.io/s/wild-brook-jpeio?file=/src/App.js

我使用useEffect钩子获取一个值数组。数组变量是使用useState钩子设置的

本机选择的值和onChange属性还使用另一个状态变量及其设置函数来更新它。

使用下面的代码部分,使用set函数设置在使用效果获取数据之后本机选择的选定值。

 // set the default selection on first load
  if (!isEmpty(combolist)) {
    console.log(combolist[0].name);
    setSelection(combolist[0].name);
  }

但这会导致太多的渲染错误。

如何解决这个问题并实现我的目标

共有2个答案

经福
2023-03-14

您需要使用一个use效应钩子来实现这一点:


  useEffect(() => {
    if (data.length) {
      const combolist = data.map((obj) => pick(obj, ["id", "name"]));

      // set the default selection on first load
      if (!isEmpty(combolist)) {
        console.log(combolist[0].name);
        setSelection(combolist[0].name);
      }
    }
  }, [data]);
姜天宇
2023-03-14

一种简单的方法是在useffect中移动设置组合列表,以防止多次重新渲染这是解决方案链接。

 类似资料:
  • 问题内容: 我正在尝试从Material-UI 更改组件的边框。到目前为止,我已经尝试过: 我可以自定义等,但是许多小时后,我仍然无法自定义Select。我尝试也传递一个,但是您必须自定义,这甚至更糟。 有人可以帮我这个沙盒吗? https://codesandbox.io/s/material-demo- ecj1k 我真的很感激。 问题答案: 以下是为默认,悬停和聚焦状态覆盖边框(),标签()

  • 我想显示现在说唱文字,比如...我怎么能改变它通过使用材料UI 它像那样显示“身体1”。Lorem ipsum dolor坐在这里,奉献给我们。克罗斯·布兰迪特..." 但我想表现得像“身体1.洛雷姆·伊普苏姆·多洛·希特·阿梅特,奉献给精英们。库斯·布兰迪。。。더보기" 你能帮我吗?

  • 我有一个mat select,其中的选项是数组中定义的所有对象。我试图将该值设置为其中一个选项的默认值,但是当页面呈现时,该值处于选中状态。 我的typescript文件包含: 我的HTML文件包含: 我已尝试将和

  • 我有一个非常简单的角度材料选择组件,从一个对象数组填充。我尝试了ngModel和component select属性的双向绑定,但两者都不能像预期的那样工作。 我所期望的:更改选择的选项将相应地更新ngModel值。 实际发生的情况:更改selected选项会触发select change方法,但不更新binded属性。 如何再现:选择选项2,然后回到选项1,只播放2个选项。 转载位置:https

  • 问题内容: 我用。字段之一是: 我需要更改其显示类型。我不想在显示中使用(或在Python 2中),而是要显示曲目的名称和日期。 我该怎么做? 问题答案: 子类并重写以返回曲目名称和日期。然后在中使用新字段。

  • 在这种情况下,我更改选择元素并调用数据更新方法。该方法从状态获取值。但是当数据更新时,状态还没有改变。当您再次调用数据更新时,状态已经更新了如何正确进行更新? 反应成分