【问题标题】:Render one React component inside other在另一个内部渲染一个 React 组件
【发布时间】:2017-06-24 21:04:58
【问题描述】:

我是 react 新手,我正在使用 material-ui,我想在 React 中设计一个自定义自动完成功能,一旦从下拉列表中选择数据,它就会在文本输入中显示为芯片。我正在使用 material-ui 自动完成的onNewRequest 属性,但我不确定如何在其中渲染芯片组件。 有人可以指导我如何正确地做到这一点吗?我想设计像 gmail 中的布局这样的收件人。我知道有可用的 npm 包,但我需要纯粹从 material-ui 设计它,所以请用正确的方法指导

谢谢

【问题讨论】:

  • 很遗憾,您的问题目前提出的范围太广。为了简短地回答标题中的问题,我会说“你没有,你在组件的渲染函数中实例化另一个组件”。考虑在React documentation 中进行进一步研究,然后在您偶然发现具体问题时生成问题的minimal reproducible example。

标签: javascript node.js reactjs npm material-ui


【解决方案1】:

这个问题非常广泛,但我至少会尝试为您指出正确的方向。

您不需要在自动完成中渲染芯片,创建一个新的可重用组件。父组件将包含自动完成和芯片。这将包含所有状态。它有两个子组件:

第一个孩子总是自动完成,修改 material-ui 样式使其透明且没有下划线/边框。 Whenever an element is selected, send an event to the parent to add the element to the chips array in the parent state.

第二个孩子是芯片数组。这只是一个展示组件,接收芯片数组,芯片可能包含另一个移除芯片的道具事件。

【讨论】:

  • 所以这就像隐藏芯片然后在模糊中显示?
  • 一开始数组是空的,所以第二个组件什么也不显示。当用户从自动完成中选择某些东西时,将其添加到数组中,它将出现在芯片组件中。为什么要隐藏筹码?
  • 我不需要;我只想将它们显示为单个组件,就像 Gmail 收件人一样。我这样做它们会显示在不同的行上,所以我应该为它们设置样式以显示它们就像 Gmail 一样?
  • 是的,将它们设置为内联显示而不是块显示
猜你喜欢
  • 2018-01-26
  • 1970-01-01
  • 2023-04-06
  • 2017-12-10
  • 2021-12-04
  • 2020-04-14
  • 2020-10-21
  • 1970-01-01
  • 2020-08-09
相关资源
最近更新 更多