javascript - React Hooks - 即使对象为空,仍会调用 useEffect
问题描述
我有一个关于 React Hooks 的问题。这是我的代码示例:-
import React, { useState, useEffect } from "react";
import Card from "./Card";
const CardsBoard = () => {
useEffect(() => {
doRatingClickProcessing()
}, [ratingObj])
const doRatingClickProcessing = () => {
const { player, title, rating } = ratingObj
}
return (
<div className="container-fluid justify-content-center">
<div className="row">
<div className="col-md-6">
<Card
cardInfo={player1Card}
player={1}
showCard={visiblePl1}
clickableRatings = {clickableRatings}
onClick={ratingObj => setRatingObj(ratingObj)}
/>
</div>
<div className="col-md-6">
<Card
cardInfo={player2Card}
player={2}
showCard={visiblePl2}
clickableRatings = {clickableRatings}
onClick={ratingObj => setRatingObj(ratingObj)}
/>
</div>
</div>
)}
</div>
)
}
export default CardsBoard
ratingObj
然后在卡片组件中,当用户点击评分时,我将成功返回。
在卡片组件中,我有这样的东西:-
<div
className="col-md-2 text-left card-rating-color"
onClick={() =>
onClick({
player: player,
title: row[0].title,
rating: row[0].rating,
})
}
>
{row[0].rating}
</div>
但是我很困惑为什么useEffect()
即使加载了 Card 组件也会触发,并且ratingObj
仍然是空的。不应该只有在ratingObj
填满时才触发吗?
感谢您的帮助和时间
解决方案
import React, {useState,useMemo} from 'react';
const App = () => {
const [name, setName] = useState('');
const [modifiedName, setModifiedName] = useState('');
const handleOnChange = (event) => {
setName(event.target.value);
}
const handleSubmit = () => {
setModifiedName(name);
}
const titleName = useMemo(()=>{
console.log('hola');
return `${modifiedName} is a Software Engineer`;
},[modifiedName]);
return (
<div>
<input type="text" value={name} onChange={handleOnChange} />
<button type="button" onClick={handleSubmit}>Submit</button>
<Title name={titleName} />
</div>
);
};
export default App;
const Title = ({name}) => {
return <h1>{name}</h1>
}
推荐阅读
- python - Boost.Python 并导入 dll,“找不到指定的模块”
- java - 输出具有空值的 TableRow 时出现 NullPointerException
- apache-kafka - kafka旧的consumer_offsets没有被删除
- python - Shell 脚本将参数传递给另一个 Shell 脚本
- jquery - 在 jQuery 中选择下一个出现
- kotlin - 使用数据类插入对象
- node.js - 使用客户端语言与数据库进行通信(如 node.js)是否安全?
- sorting - 如何根据名称中包含的数字对包含数千个项目的列进行升序排序?
- angular - 如何在 FormArray (Reactive Forms) 中使用 mat-autocomplete (Angular Material Autocomplete)
- html - 调整大小不移动到网格布局的中心