reactjs - 我没有让一个减速器记录我的状态更改
问题描述
当我调度加载程序的动作时,当我在 redux 记录器中看到时,reducer 正在更改状态,但是当我调度动作以更改状态时,它不是控制台登录在旁边的行中。
import React from 'react';
import { useEffect } from 'react';
import { useState } from 'react';
import {connect} from 'react-redux';
import {loader} from "../../actions/loaderAction";
import './Loader.css';
function LoaderPage(props) {
let [showloader,setshowloader] = useState(0);
const testfunc = ()=>{
props.loader(true);
console.log(props.Loader);
}
useEffect(()=>{
testfunc();
// eslint-disable-next-line
},[]);
return (
<>
{showloader
?
<div className="loader-comp">
<div className="animated yt-loader"></div>
<div className="mask"></div>
</div>
:
""
}
</>
)
}
const mapStateToProps= (state) => (
{
Loader:state.Loader
}
)
export default connect(mapStateToProps, {
loader
})(LoaderPage);
我知道 reducer 异步返回新状态,所以当我应该使用 console.log 作为 props.Loader 时,任何帮助或建议都是有价值的。
解决方案
当您传递一个空数组作为第二个参数时,useEffect
意味着代码只会在挂载时执行。而且您的日志没有反映,因为状态更新不同步。
您希望每次Loader
更改时都执行日志。console.log
从您的功能中删除您的。创建另一个useEffect
来记录您的日志Loader
并传递Loader
给数组,这意味着您的代码将在Loader
更改时执行:
useEffect(()=>{
console.log(props.Loader);
},[props.Loader]);
推荐阅读
- docker - 使用 JDBC 输入插件在 Docker 上的 Logstash 不会从 SQL Server 获取所有行
- flutter - 如何突出显示我在字符串中搜索的确切单词,而不仅仅是字符串的开头?
- flutter - 如何实时获取文档长度
- javascript - Reactjs 从获取请求中返回一个对象
- javascript - Nginx 正在尝试打开文件而不是重定向到代理
- python - _joint_log_likelihood 给我错误的值
- sql - 如何按日期获取最后一件商品的价格
- python-3.x - 定期执行功能而不停止其他操作
- r - 使用 R 从 PDF 表单到数据框的文本挖掘
- r - 如果 r 中出现错误,则转到 lapply() 的下一次迭代