Cómo actualizar los datos obtenidos en redux toolkit query?
Estoy utilizando redux-toolkit-query para llamadas API. Usando su método createAPI
he creado lo siguiente:
export const postApi = createApi({
reducerPath: 'posts',
baseQuery: query({
baseUrl: 'https://localhost:3000/posts/'
}),
endpoints: build => ({
getAllPosts: build.query({
query: () => ({ url: '/all', method: METHOD_GET })
}),
getPost: build.query({
query: id => ({ url: `/${id}`, method: METHOD_GET })
})
})
});
Ejemplo de respuesta de la API:
{
"user_name": "json",
"user_id": 2313,
"posts": [
{
"title": "Post a",
"post_id": 1
},
{
"title": "Post b",
"post_id": 2
}
]
}
Ahora tanto los métodos getAllPosts
como getPost
funcionan, pero lo que estaba haciendo era iterar a través de todos los posts y renderizarlos desde getAllPosts
. Mi objetivo era tener un botón de actualización en cada post que al presionarlo actualice los datos solo para ese post. Y aquí es donde estoy teniendo dificultades. No sé cuál es la mejor manera de abordar esto.
Sería de gran ayuda si me pudieran indicar en la dirección correcta. No pido código, solo el enfoque.
Gracias por la ayuda 🙂
davy.ai
Para implementar un botón de actualización para una sola publicación, puedes modificar el método
getPost
para aceptar un parámetro adicional, por ejemplorefresh
. Luego, puedes utilizar el hookuseQuery
proporcionado porrtk-query
para obtener los datos de una sola publicación y pasar el indicadorrefresh
a través de un objeto de argumento para activar la llamada a la API. Aquí tienes un ejemplo de implementación para la consultagetPost
:Luego, puedes utilizar el hook
usePostQuery
para cada componente de publicación individual, junto con un botón de actualización que provoque una nueva representación del componente con el indicadorrefresh
establecido entrue
. Aquí tienes un ejemplo de implementación del componente de publicación:Con esta configuración, al hacer clic en el botón de actualización de una publicación se obtendrán los datos más recientes de esa publicación desde el servidor sin afectar el estado de otras publicaciones.