radiusPxFn
问题 该组件未重新渲染,仅在控制台上更新。 说明
基本上,我正在使用材质ui和 反应,我已经显示了电影的内容,但是当我单击 删除按钮,它在控制台上更新,但在UI上不更新,表示前面 最终浏览器
答案 0 :(得分:0)
您不应更改您的状态。但是删除后就可以了。
如果先前状态和当前状态略微相同(也称为相同的对象实例),则不会重新呈现反应。您需要生成一个新数组,而没有要删除的电影。
为此,您可以使用setMovies的回调和数组的filter函数:
const handleDelete = (movie) => {
setMovies(currentMovies => currentMovies.filter(m => m._id !== movie._id));
};
这会将电影设置为一个新数组(过滤器会生成一个新数组)并删除所选的电影,因为如果id匹配,它将返回false,并且不会包含在返回的数组中。
您也不需要useEffect,只需这样做:
const [movies, setMovies] = useState(movieList);
因为这只会在初始渲染时生效,并且useEffect会做完全相同的事情。