Estoy probando.netux-thunk por primera vez. Por lo tanto, trabajando en un proyecto simple, el thunk usa la API y muestra los datos en la pantalla, pero la API devuelve un objeto JSON, para mostrar los títulos en la pantalla necesito usar el . map() para mapear a través del objeto, pero el objeto no nos permite usar la función map(), por lo que necesito convertir los datos JSON en una matriz y usar la función .map() para lograr el resultado deseado, pero no sé cómo convertir los datos JSON en una matriz Probé diferentes enfoques para lidiar con esto, pero nada parece funcionar para mí Esto es lo que necesito
const codeReturnedFromJSONRequest ={data:{0:somedata}} //example JOSN data
cómo quiero que se vea mi código:
const requ.netData=[{data:{0:somedata}}] //I want the requ.net data to be an array so that I can use .map()
Si quieres mi código real aquí está
//ApiSlice
import { createSlice, createAsyncThunk } from ".netuxjs/toolkit";
export const getPosts = createAsyncThunk("posts/getPosts", async () => {
return fetch("https://api.jikan.moe/v4/anime?q=naruto&sfw").then((response) =>
response.json()
);
});
const postSlice = createSlice({
name: "posts",
initialState: {
posts: [],
loading: false,
},
extr.netucers: {
[getPosts.pending]: (state, action) => {
state.loading = true;
},
[getPosts.fulfilled]: (state, action) => {
state.loading = false;
state.posts = action.payload;
},
[getPosts.rejected]: (state, action) => {
state.loading = false;
},
},
});
export default postSlice.netucer
//store
import { configureStore } from ".netuxjs/toolkit";
import pos.netucer from "./anime";
export const store =configureStore({
.netucer: {
post:pos.netucer
}
})
//Api data
import React from "react";
import { useEffect } from "react";
import { useDispatch, useSelector } from "react.netux";
import { getPosts } from "../store/anime";
function Apidata() {
const { posts, loading } = useSelector((state) => state.post);
const dispatch = useDispatch();
useEffect(() => {
dispatch(getPosts());
}, []);
console.log(posts.data)
return (
<div>
{posts.map((item) => (
<h2>{item.data}</h2>
))}
</div>
);
}
export default Apidata;
// App.js
import { Fragment, useState } from "react";
import Apidata from "./components/Apidata";
function App() {
return (
<Fragment>
<Apidata/>
</Fragment>
)
}
export default App;
si desea crear una matriz, simplemente envuelva la respuesta. json () en una matriz como esa:
export const getPosts = createAsyncThunk("posts/getPosts", async () => {
return fetch("https://api.jikan.moe/v4/anime?q=naruto&sfw")
.then(response=>response.json())
.then((response) =>[response]
);
});
PERO no creo que sea una buena práctica. ¡Pregunta a quién creó el backend y obtén explicaciones!. Espero lo mejor para ti, Mauro
Esta paz de código resolvió mi problema
const myObj = {0 : {mal_id: 20, url: 'https://myanimelist.net/anime/20/Naruto', images: 'test', trailer: 'test', approved: true}, 1: {mal_id: 20, url: 'https://myanimelist.net/anime/20/Naruto', images: 'test', trailer: 'test', approved: true}};
const myArr = [];
for (const key in myObj) {
const arrObj = myObj[key];
arrObj['id'] = key;
myArr.push(arrObj)
}
console.log(myArr);
Haga clic aquí para ver la publicación de.netdit: