Actualizar la tabla antd al cambiar la fuente de datos.
Tengo una página que contiene un componente de barra de búsqueda y un componente de tabla de antd, y quiero que mi tabla de antd se actualice cada vez que cambie el origen de datos o cuando realizo una búsqueda en la barra de búsqueda. Por ahora, mi tabla solo se actualiza cuando actualizo la página, por lo que agregué un window.location.reload()
a mi función onSearch para que funcione como se desea, pero quiero que se actualice sin tener que actualizar toda la página. ¿Hay alguna manera de hacer eso?
Aquí está mi archivo table.js
export default function Table() {
const [dataSource, setdataSource] = useState([]);
const [loading,setLoading] = useState(false);
useEffect(() => {
setLoading(true);
fetch(`${apiEndpoint}/api/managed-list`)
.then((response) => response.json())
.then((data) => {
setdataSource(data);
console.log(data);
})
.catch((err) => {
console.log(err);
})
.finally(() => {
setLoading(false);
});
}, []);
return (
<div>
<table bordered="{true}" loading="{loading}" columns="{columns}" datasource="{dataSource}" pagination="{true}"></table>
</div>
);
}
Aquí está mi archivo searchbar.js
function SearchBar() {
const [searchedText, setSearchedText] = useState("");
let navigate = useNavigate();
const onSearch = () => {
navigate(`/search?q=${searchedText}`);
// encontrar una solución para actualizar sin refrescar
// window.location.reload()
console.log(searchedText);
fetch(`${apiEndpoint}/api/managed-list`,{
method: 'POST',
body: JSON.stringify({
content: searchedText
}),
headers: {"Content-Type": "application/json; charset=UTF-8", 'Accept': 'application/json'}
})
.then(response => response.json())
.then(message => console.log(message))
};
return (
<div>
<input.search placeholder="Ingrese el nombre de la empresa o una palabra clave..." onchange="{(e)" ==""> {
setSearchedText(e.target.value);
}}
onSearch={onSearch}
onPressEnter={onSearch}
enterButton />
</input.search></div>
);
}
export default SearchBar;
davy.ai
Para actualizar el componente Tabla de Antd sin refrescar toda la página, puedes utilizar la gestión del estado de React. Mueve el código de llamada a la API desde el gancho
useEffect
en Table.js a una función separada, por ejemplogetTableData
. Luego, llama a esta función cada vez que cambie la fuente de datos o se realice una búsqueda.Aquí está el código actualizado:
En el código actualizado, se define una nueva función
getTableData
para hacer la llamada a la API y actualizar el estado de la variabledataSource
. Se definen dos ganchosuseEffect
separados, uno para llamar agetTableData
al cargar la página y otro para llamarlo cada vez quedataSource
osearchedText
cambien. En la funciónonSearch
deSearchBar
, se agrega la llamadasetdataSource([])
para borrar los datos existentes antes de obtener nuevos datos de la API de búsqueda.