我有一张Mui卡的清单。在卡悬停时,我希望一个浮动的动作按钮出现在卡内。我使用状态来实现这一点,问题是在状态改变期间悬停状态被应用于所有卡,这意味着按钮出现在每张卡上,而不是被指向/悬停的那张。我怎样才能控制这个按钮只显示在状态动作被触发的卡片上。
const [state, setState] = useState({
actionButton: false
});
<Card
className="miniGraphCards"
onMouseOver={() => setState({ actionButton: true })}
onMouseOut={() => setState({ actionButton: false })}
>
{state && state.actionButton != false &&
<Fab>
<EmojiEmotionsIcon />
</Fab>}
请参阅可复制代码:您将注意到图形的重复重新渲染和按钮被应用于悬停时的所有卡片。
https://codesandbox.io/s/ellastic-kowalevski-j3wjx
您正在保存app
组件上的“状态”。您的布尔ActionButton
将触发所有项。
因为您希望应用程序
知道哪些项处于活动状态/悬停状态,所以可以考虑保存该卡
的唯一值,这样您就可以确定卡
是否处于悬停状态。
由于我从您前面的问题中仍然知道该应用程序是如何工作的,我建议为您悬停的卡
保存data.symbol
。
<Card
onMouseOver={() => setState({ actionButton: data.symbol })}
onMouseOut={() => setState({ actionButton: null })}
>
在遍历所有卡片时,您可以检查curent是否需要如下图标:
{state && state.actionButton === data.symbol && (
<Fab>
<EmojiEmotionsIcon />
</Fab>
)}
更新沙箱
如何使用JSX进行条件渲染? 例如,我这里有div,如果props的值为null,我想呈现文本“不知道”,否则如果props不等于null,则呈现props。 例如: 我试过了,但没有成功。知道我做错了什么吗? 提前感谢!
我想动态呈现JSX,如下所示; 因此,我希望仅当“showSubTextAndIcon”为true时,才渲染该子文本和图标。现在,上述方法不起作用,我得到一个语法错误,说:; 相邻的JSX元素必须包装在一个封闭的标记中。你想要一个JSX片段吗 这工作,如果我添加一个包装列布局。然而,当show SubTextAndIcon是真的时,这会扰乱我的布局。 注意:列布局是从材料ui库派生的。
问题内容: 我已经尝试了两个类组件: 并使用功能组件: 页面上显示的x值永远不会改变,或者似乎是随机改变的。是什么赋予了? 问题答案: 当您告诉React某些更改时,React仅知道使用其为状态管理提供的功能来重新渲染: 另外,功能组件应该是 纯 组件(没有副作用),因此要更新它们,React会给我们带来麻烦: 因此,您不能只是分配给一个变量并期望React知道:您必须使用它的更新函数,以便它知道
对于在其生命周期的某个点隐藏的组件,呈现它的最佳方式是什么?1)渲染组件,但不显示它(显示:无)。2)只在需要时渲染组件。什么对性能更好?如果组件的道具和状态稍后更新,是否最好让组件存在,但隐藏在虚拟DOM中? 或者这个:
我刚开始检查react表单。我遇到了一个问题,react在渲染中标记了我试图填充输入框标签的行。以下是我的应用程序代码: 在这一点上,我所要做的就是用名称输入框的标签为“您的名字”来呈现表单,如果没有输入名称,则让react用名称输入框的标签为“您需要输入您的名字”来重新呈现表单。 非常感谢任何援助。
问题内容: 我使用setState更新html的一部分,但发现未呈现新的更新html。这是js fiddle 代码: HTML: js: 我省略了从服务器更新html的部分,但结果是相同的。如何让状态字符串呈现? 问题答案: 使用注入HTML作为一个字符串做出反应(但请注意,阵营将无法在它的虚拟DOM使用这个标记): http://jsfiddle.net/5Y8r4/11/ 用于执行此操作的AP