Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 设置函数调用前的状态_Reactjs_Promise_React Hooks - Fatal编程技术网

Reactjs 设置函数调用前的状态

Reactjs 设置函数调用前的状态,reactjs,promise,react-hooks,Reactjs,Promise,React Hooks,在调用handleSearchClick中的resetStates功能之前,我无法设置page=1。当前,当调用resetStates时(在单击搜索按钮之后),它不会在第一次单击时将页面重置为1,但在第二次搜索时,它会这样做 我尝试使用异步等待,但这并不能在handleSearchClick之前将页面重置为1。如何在函数调用之前将页面重置为1?任何反馈都将不胜感激 这就是我目前正在做的: const resetStates = async () => { const

在调用
handleSearchClick
中的
resetStates
功能之前,我无法设置
page=1
。当前,当调用
resetStates
时(在单击
搜索按钮之后),它不会在第一次单击时将页面重置为1,但在第二次搜索时,它会这样做

我尝试使用
异步等待
,但这并不能在handleSearchClick之前将页面重置为1。如何在函数调用之前将页面重置为1?任何反馈都将不胜感激

这就是我目前正在做的:

const resetStates = async () => {
            const promise1 = setHasMore(true);
            const promise2 = await setPage(1);
            Promise.all([promise1, promise2])
                .then(() => {
                 /* At this point I want page to equal 1 */
                    handleSearchClick(); 
                })
                .catch(error => {
                    throw new Error(error);
                });
        };

    /**
     * Handles event on search click
     */
    const handleSearchClick = async () => {
        setItems([]);
        setIsLoading(true);
        const base = handleBaseId();
        const items = await fetchSearchPayload(page, value, option, base);
        setIsLoading(false);
        setInitialLoad(true);
        setItems(items);
        console.log('On Click', { option }, { page });
    };

 <SearchBar
    onClickButton={resetStates}
    onValueChange={handleChange}
    value={value}
    pageNum={page}
    onEnter={handleSearchOnEnter}
  />
const resetStates=async()=>{
const promise1=setHasMore(真);
const promise2=等待设置页(1);
承诺。全部([承诺人1,承诺人2])
.然后(()=>{
/*此时,我希望page等于1*/
handleSearchClick();
})
.catch(错误=>{
抛出新错误(Error);
});
};
/**
*处理搜索单击时的事件
*/
const handleSearchClick=async()=>{
集合项目([]);
设置加载(真);
const base=handleBaseId();
const items=await fetchSearchPayload(页面、值、选项、基);
设置加载(假);
setInitialLoad(真);
设置项目(项目);
log('On Click',{option},{page});
};

状态更新程序是异步的
,但它不会返回承诺,因此您不能使用
等待
来等待承诺完成。相反,您可以将页值作为参数传递

    const resetStates = async () => {
            setHasMore(true);
            setPage(1);
            handleSearchClick(1); 
    };

    /**
     * Handles event on search click
     */
    const handleSearchClick = async (page) => {
        setItems([]);
        setIsLoading(true);
        const base = handleBaseId();
        const items = await fetchSearchPayload(page, value, option, base);
        setIsLoading(false);
        setInitialLoad(true);
        setItems(items);
        console.log('On Click', { option }, { page });
    };

 <SearchBar
    onClickButton={resetStates}
    onValueChange={handleChange}
    value={value}
    pageNum={page}
    onEnter={handleSearchOnEnter}
  />
您可以从下面的帖子中参考
useproval
的实现


状态更新程序是异步的
,但它不会返回承诺,因此您不能使用
等待
来等待承诺完成。相反,您可以将页值作为参数传递

    const resetStates = async () => {
            setHasMore(true);
            setPage(1);
            handleSearchClick(1); 
    };

    /**
     * Handles event on search click
     */
    const handleSearchClick = async (page) => {
        setItems([]);
        setIsLoading(true);
        const base = handleBaseId();
        const items = await fetchSearchPayload(page, value, option, base);
        setIsLoading(false);
        setInitialLoad(true);
        setItems(items);
        console.log('On Click', { option }, { page });
    };

 <SearchBar
    onClickButton={resetStates}
    onValueChange={handleChange}
    value={value}
    pageNum={page}
    onEnter={handleSearchOnEnter}
  />
您可以从下面的帖子中参考
useproval
的实现


页面是一种状态。我将其初始化为
const[page,setPage]=React.useState(1)如果我将1作为参数传递,它将不会更新为状态。有没有办法将其重置为1而不传递硬编码的数字?更新我的答案很高兴有帮助页面是一种状态。我将其初始化为
const[page,setPage]=React.useState(1)如果我将1作为参数传递,它将不会更新为状态。有什么方法可以将其重置为1而不传递硬编码的数字吗?更新我的答案很高兴能提供帮助