【问题标题】:Passing arguments in React java script在 React javascript 中传递参数
【发布时间】:2021-01-09 12:38:26
【问题描述】:

我正在尝试从钩子上的 React 应用程序中的函数获取参数。这只是一个例子。有谁知道为什么(无论女巫函数会被触发 fireFavs() 或 fireFavs2())它总是让我落后于实际状态一步,我该如何解决这个问题?我尝试编写单独的模块甚至单独的钩子,但我无法做好。

`

import React, { useState, useEffect } from "react";
import {useSelector, useDispatch } from "react-redux";

const CharacterDetails = ({ favs}) => {
  const favourites = useSelector(state => state.isFavouriteRedurec)
  let favIDs = favourites.favIDs

  function fireFavs() {
    console.log(favs);
  }
  function fireFavs2() {
    console.log(favIDs );
  }
return(
<>
        <IconButton
          aria`enter code here`-label="add to favorites"
          className={classes.actionPanel}
          onClick={() => {fireFavs2(); fireFavs() }}
        >
        </IconButton>
</>
 )
export default CharacterDetails;

`

【问题讨论】:

    标签: javascript reactjs redux parameter-passing


    【解决方案1】:

    从您的代码中不清楚您要实现什么,但您所描述的听起来可能是预期的行为,因为setState 不是同步的 (see documentation)。如果您想在状态发生更改时查看它们,请在您的函数中设置您的状态并尝试在 useEffect 中登录(我看到您已经导入它但没有使用它)

    useEffect(() => {
       console.log(yourstate)
    }, [yourstate])
    
    

    【讨论】:

    • 这里有同样的问题。我比实际状态落后了 1 步。让 [inBook, setInBook] = useState(true); useEffect(() => { // setAddFav(favIDs) console.log(favIDs); }, [inBook]) onClick={() => {setIsFavourite(isFavourite + 1); fireFavs(); setInBook(!inBook) }}
    • 你去codesandbox.io/s/aged-snow-s4wv7?file=/src/App.js,你可以在下面的控制台上检查它正在同时记录
    猜你喜欢
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 2017-03-29
    • 2020-04-14
    • 2018-02-19
    • 1970-01-01
    • 2017-10-20
    • 2015-09-05
    相关资源
    最近更新 更多