【发布时间】:2021-01-17 15:55:55
【问题描述】:
当我调度加载程序的操作时,当我在 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 任何帮助或建议都很有价值。
【问题讨论】:
-
您仅在安装组件时调用该函数(此时我假设
props.Loader尚未更新)。你再也不会打电话给testfunc()了。 -
假设动作更新
Loaderredux 状态,只需将console.log移出函数即可。当 prop 更改并记录新值时,您的组件应该重新呈现。另外,如果您不在其他地方调用props.loader,请将其移至您的useEffect
标签: reactjs redux react-redux loader