Tengo un problema con algún error. He estado tratando de arreglar esto durante una semana, pero todavía no puedo encontrar el problema...
Error de tipo no capturado: no se puede desestructurar la propiedad 'nombre de usuario' de 'match.parse' porque no está definida.
import React, { useEffect } from 'react'; import qs from 'qs'; import { withRouter } from 'react-router-dom'; import { useDispatch, useSelector } from 'react-redux'; import PostList from '../../components/posts/PostList'; import { listPosts } from '../../modules/posts'; const PostListContainer = ({ location, match }) => { const dispatch = useDispatch(); const { posts, error, loading, user } = useSelector( ({ posts, loading, user }) => ({ posts: posts.posts, error: posts.error, loading: loading['posts/LIST_POSTS'], user: user.user, }), ); useEffect(() => { const { username } = match.parse; const { tag, page } = qs.parse(location.search, { ignoreQueryPrefix: true, }); dispatch(listPosts({ tag, username, page })); }, [dispatch, location.search]); return ( <PostList loading={loading} error={error} posts={posts} showWriteButton={user} /> ); }; export default withRouter(PostListContainer);Como dice el mensaje de error, debido a que match.parse no está undefined , no puede destruir el nombre de username de él, lo que significa que no puede hacer:
const { username } = match.parse;Las llaves del lado izquierdo se denominan destructor en ECMAScript porque "destruye" el valor del objeto del lado derecho. Es lo mismo que:
const username = match.parse.username; y si match.parse no está undefined , es lo mismo que:
const username = undefined.username;lo que obviamente está mal.
Por lo tanto, intente console.log ging match.parse y vea si realmente no está undefined . Si es así, necesita depurar por qué es.