【发布时间】:2021-05-05 00:50:26
【问题描述】:
我正在使用 Next.js 中的 Cotext API,需要知道在下面的 sn-p 代码中更改状态的最佳方法。预期的功能是,当用户在另一个表单组件中按下提交时,getSearchInput 函数将使用此值更新SearchInput 状态。这应该发生在用户在输入字段中提交一个新字符串并且我到目前为止的工作时,
const getSearchInput = (string) => {
setSearchInput(string);
};
问题是我知道像这样直接更新状态从来都不是一个好主意。但我不知道我还能如何删除以前的字符串并用 tge latest 替换它。如果您正在寻找完整上下文组件的代码,您可以在下面找到它
import axios from 'axios';
import { createContext, useState, useEffect } from 'react';
const SearchContext = createContext();
const SearchProvider = ({ children }) => {
const [ state, setstate ] = useState(null);
const [ searchInput, setSearchInput ] = useState('');
useEffect(
() => {
const source = axios.CancelToken.source();
const getData = async () => {
try {
const response = await axios.get(`https://rickandmortyapi.com/api/character/?name=${searchInput}`);
setstate(response.data.results);
} catch (error) {
console.error('error', error);
}
};
getData();
return () => {
source.cancel();
};
},
[ searchInput ]
);
const getSearchInput = (string) => {
setSearchInput((prev) => string);
};
return <SearchContext.Provider value={{ state, getSearchInput, searchInput }}>{children}</SearchContext.Provider>;
};
export { SearchContext, SearchProvider };
【问题讨论】:
-
您能与我们分享一下为什么您目前的方法从来都不是一个好主意吗?
标签: reactjs next.js setstate use-state