reactjs - 如何让反应只渲染组件的一部分?
问题描述
我正在用 CSS 网格编写一个反应应用程序。我不打算在这里包含 css,但它是一个 2x2 网格。
import { useState } from 'react';
function Container() {
const [count, setCount] = useState(0);
return (
<div className = "gridwrapper">
<div className = "top_left"> <SomeCustomComponent></div>
<div className = "bottom_left"> <CustomCounter counter = {count}></div>
<div className = "bottom_right"> <CustomCounter counter = {count+2}></div>
<div className = "top_right"><button onClick={() => setCount(count + 1)}>Click me</button><div>
</div>
);
}
function CustomCounter({count}){
return(<p>The count is {count}</p>)
}
我现在有两个问题
由于 setState 会导致重新渲染,现在它会重新渲染整个事情。但是我只需要重新渲染底部的两个单元格,因为我的 Container 组件的其他部分甚至不依赖于道具。
为了让我的网格结构正常工作,我需要将它们包装在 div 中,这是为什么呢?我之前尝试直接分配类名,但没有用
解决方案
- 您可以使用 useEffect 侦听器仅在特定变量更改时更改。据我所知,您不能只重新渲染组件的一部分。
- 当您制作自定义组件时,您还需要使 className 属性在子组件上可用。
例如
function SomeCustomComponent(props) {
return (
<div className={props.className}>
// ... your component stuff here ..
</div>
)
}
推荐阅读
- r - 未提供编码:默认为 UTF-8
- python - 根据非相邻索引列表创建列表
- visual-studio-code - VS Code 在同一主机上打开不同文件夹时反复询问密码
- html - 未应用溢出
- c# - Oracle.ManagedDataAccess.Core 的高内存使用率
- c++ - 可变数量的 std::pair 元素的参数包扩展无法按预期工作
- swift - 以编程方式快速添加约束
- django - 如何根据 Django 中的用户类型重定向到不同的页面?
- google-apps-script - Google 表格脚本 - 授权过程中断 - 错误 401:禁用客户端
- android - Android 创建可重复使用的按钮模板