假设我有一些依赖于其他状态的状态(例如当A改变时我希望B改变).
是否适合创建一个观察A并在useEffect钩子中设置B的钩子?
效果是否级联,当我点击按钮时,第一个效果会激发,导致b改变,导致第二个效果在下一个渲染之前触发?构造这样的代码有任何性能缺点吗?
let MyComponent = props => {
let [a, setA] = useState(1)
let [b, setB] = useState(2)
useEffect(
() => {
if (/*some stuff is true*/) {
setB(3)
}
},
[a],
)
useEffect(
() => {
// do some stuff
},
[b],
)
return (
<button
onClick={() => {
setA(5)
}}
>
click me
</button>
)
}
Run Code Online (Sandbox Code Playgroud) 我有一个 Next.js 页面,它从 .js 内部的数据库(使用 prisma 作为 ORM)获取数据getServerSideProps()
。
我基于官方 Prisma github 上的这个示例进行工作。这是页面设置的简化版本:
import prisma from 'prisma';
export const getServerSideProps = async ({ req, res }) => {
const drafts = await prisma.post.findMany(...);
};
const MyPage = () => {return <div>Hello</div>};
export default MyPage;
Run Code Online (Sandbox Code Playgroud)
Prisma 导入到页面文件中并在导出的getServerSideProps()
实际页面组件中引用,但未在其中引用。我的问题是,prisma 是否会包含在随此页面发送到浏览器的捆绑包中?或者 Next 是否足够聪明,可以修剪仅在服务器端函数中引用的包?