我无法重置页面=1。在...
k=pm.Uniform('k',0,20) # same within replicates
B=pm.Uniform('B',0,1000,shape=numrepl) # can vary between expts.
P=pm.Uniform('P',0,1000,shape=numrepl) # can vary between expts.
exprate=???
modelmu=???
中,我有handleSearchClick
,但是单击一秒钟较晚,因此第二次单击页面后将重置为1。
这是我当前的代码
setPage(1)
我还尝试重置按钮本身中的页面,但收到一条const [page, setPage] = React.useState(1);
//Other states as well
/**
* Handles event on search click
*/
const handleSearchClick = async () => {
setItems([]);
const database = handleBaseId();
setPage(1);
const items = await fetchSearchPayload(page, value, option, database);
setIsLoading(false);
setItems(items);
};
错误消息
这是我尝试做的
react limits the number of renders to prevents an infinite loop
我还尝试使用<SearchBar
onClickButton={handleSearchClick}
onValueChange={handleChange}
value={value}
pageNum={page}
onEnter={handleSearchOnEnter}>
{setPage(1)}
</SearchBar>
并添加了一个useEffect
状态,该状态每次单击count
时都会增加,但是我无法确定自己是否落后了。
searchBar
任何有关立即重置const [count, setCount] = React.useState(0);
React.useEffect(() => {
setPage(1);
}, [count]);
/**
* Handles event on search click
*/
const handleSearchClick = async () => {
setCount(count+1);
setItems([]);
const database = handleBaseId();
setPage(1);
const items = await fetchSearchPayload(page, value, option, database);
setIsLoading(false);
setItems(items);
};
的建议都将受到欢迎!
答案 0 :(得分:1)
似乎您正在尝试设置页面(异步),然后立即在您的page
调用中使用fetchSearchPayload
状态。考虑到您总是将页面的硬编码设置为1,因此也可以在fetchSearchPayload
调用中将1硬编码。
您可以采取的另一种方法是,仅在页面更新后通过以下方式进行异步调用:
React.useEffect(() => {
const database = handleBaseId();
const items = await fetchSearchPayload(page, value, option, database);
setIsLoading(false);
setItems(items);
}, [ page ]);
/**
* Handles event on search click
*/
const handleSearchClick = async () => {
setItems([]);
setPage(1);
};
答案 1 :(得分:0)
问题在于状态更新与钩子状态更新器是异步的,就像react组件中的setState
一样。解决方案是手动传递页面以起作用,而不是取决于状态
/**
* Handles event on search click
*/
const handleSearchClick = async () => {
setItems([]);
const database = handleBaseId();
setPage(1);
const items = await fetchSearchPayload(1, value, option, database);
setIsLoading(false);
setItems(items);
};