react pass link change reactjs reactjs-flux react-router

reactjs - pass - react router params



Pase el objeto a través del enlace en el enrutador de reacción (5)

¿Es posible pasar un objeto a través del componente Link en react-router?

Algo como:
<Link to=''home'' params={{myObj: obj}}> Click </Link>

De la misma manera que pasaría los props del componente Parent to Child .

Si no es posible, ¿cuál es la mejor manera de lograrlo?
Tengo una aplicación React + Flux y renderizo la tabla con algunos datos. Lo que estoy tratando de hacer es que cuando hago clic en una de las filas me llevaría a algún componente de detalles para esta fila. La fila tiene todos los datos que necesito, así que pensé que sería genial si pudiera pasarlos a través de Link .

La otra opción sería pasar la id de la fila en la URL, leerla en el componente de detalles y solicitar los datos de la tienda por ID.

No estoy seguro de cuál es la mejor manera de lograr lo anterior ...


Así que mi conclusión final sobre esta pregunta es que no lo pensé bien. Parecía natural simplemente pasar mis datos a través del Link para poder acceder a ellos en mi componente Child . Como Colin Ramsay mencionó, hay algo llamado state en el Link pero esa no es la forma de hacerlo. Funcionaría bien cuando los datos se pasan a través del Link solo si el usuario hace clic en algo y se lo lleva al componente Child .

El problema surge cuando el usuario accede a la url que se usa en Link entonces no hay forma de obtener los datos.

Entonces, la solución en mi caso fue pasar la ID en los parámetros de Link y luego verificar si mi Store tiene los datos (el usuario accede a ellos a través de Link ) y luego obtener estos datos de la Store .

O si los datos no están en la Store llame a la action para obtener los datos de la API.


Es posible pasar un objeto a través de un enlace. Agregue sus datos dentro de una consulta en lugar de params y stringifique el objeto:

<Link to={{ pathname: `/blog/${post.id}`, query: { title: post.title, content: post.content, comments: JSON.stringify(post.comments) } }}>Read More...</Link>

Luego, en su componente hijo, vuelva a analizar la cadena en un objeto:

JSON.parse(this.props.comments)


Esto no es posible, debe pasar algo que se pueda almacenar en la URL, como una ID de cadena. Luego usaría esa ID para realizar una búsqueda del objeto.


No, no puede pasar un objeto en params , por lo que estoy de acuerdo con usted en que su mejor plan es pasar la identificación a una tienda, hacer que la tienda emita un evento CHANGE y que los componentes consulten la tienda para obtener información.


Puede intentar JSON serializarlo y luego des-serializarlo en el extremo receptor.