Reactjs React useEffect如何使用单个操作运行一个或多个函数
Сan任何人都可以帮我解决这个问题已经一周了 我的应用程序仅在以下情况下工作:(3步) 我按下按钮(按钮、复选框、单选)更改listYear、listMonth和listBranch(来自其他组件) 然后我需要按按钮1设置FilteryDate(listYear)设置FiltermDate(listMonth)和设置FilterBranch(listBranch) 然后我需要按按钮2来执行函数过滤器,它需要从按钮1接收所有数据 我想要的是:(仅1步) 当我按下按钮更改listYear、listMonth和listBranch时,我不需要再次按下按钮1和2,它将自动启动Reactjs React useEffect如何使用单个操作运行一个或多个函数,reactjs,react-native,react-redux,Reactjs,React Native,React Redux,Сan任何人都可以帮我解决这个问题已经一周了 我的应用程序仅在以下情况下工作:(3步) 我按下按钮(按钮、复选框、单选)更改listYear、listMonth和listBranch(来自其他组件) 然后我需要按按钮1设置FilteryDate(listYear)设置FiltermDate(listMonth)和设置FilterBranch(listBranch) 然后我需要按按钮2来执行函数过滤器,它需要从按钮1接收所有数据 我想要的是:(仅1步) 当我按下按钮更改listYear、listM
function content() {
const dispatch = useDispatch()
let listYear = useSelector (state=>state.cardReducer.listYear)
let listMonth= useSelector (state=>state.cardReducer.listMonth)
let listBranch= useSelector (state=>state.cardReducer.listBranch)
let originalData = useSelector(state=>state.cardReducer.originalData)
const[meter,setMeter]=useState([])
const[tableRow,setTableRow]=useState([])
const[tableRow1,setTableRow1]=useState([])
const[filterYDate,setFilterYDate]=useState([listYear])
const[filterMDate,setFilterMDate]=useState([listMonth])
const[filterBranch,setFilterBranch]=useState([listBranch])
useEffect(()=>{
dispatch(getApi())
},[])
function filtered() {
*this function will change tableRow & tableRow1*
}
function onButton1() {
*this function will change all data required in function filtered*
setFilterYDate([listYear])
setFilterMDate(listMonth)
setFilterBranch(listBranch)
}
function onButton2() {
*this function run the filtered()*
filtered()
}
}
谢谢,很抱歉我的英语不好。当listYear、listMonth或listBranch中的任何一个发生更改时,您都可以运行效果:
const filtered = useCallback(() => {
//if statement checking listYear,listMonth,listBranch
//dispatch action
}, [listBranch, listMonth, listYear]);
useEffect(() => filtered(), [filtered]);
如果filtered未分派操作,但设置了本地状态,则可以使用回调来防止循环依赖:
const [someState, setSomeState] = useState([]);
const filtered = useCallback(
() =>
setSomeState((someState) => {
//if statement checking listYear,listMonth,listBranch
//return someState.filter
//or return someState
}),
[listBranch, listMonth, listYear]
);
useEffect(() => filtered(), [filtered]);
但是,如果过滤数据是本地过滤版本的originalData,那么您应该使用选择器,我建议使用当listYear、listMonth或listBranch中的任何一个发生更改时,您可以运行一个效果:
const filtered = useCallback(() => {
//if statement checking listYear,listMonth,listBranch
//dispatch action
}, [listBranch, listMonth, listYear]);
useEffect(() => filtered(), [filtered]);
如果filtered未分派操作,但设置了本地状态,则可以使用回调来防止循环依赖:
const [someState, setSomeState] = useState([]);
const filtered = useCallback(
() =>
setSomeState((someState) => {
//if statement checking listYear,listMonth,listBranch
//return someState.filter
//or return someState
}),
[listBranch, listMonth, listYear]
);
useEffect(() => filtered(), [filtered]);
但是,如果过滤数据是原始数据的本地过滤版本,那么您应该使用选择器,我建议使用谢谢,这可能是我一直在寻找的答案,谢谢,这可能是我一直在寻找的答案