¿Hay alguna manera de pasar un componente a otro componente de reacción? Quiero crear un modelo de componente de reacción y pasar otro componente de reacción para poder incluir ese contenido.
Editar: Aquí hay un codepen reactJS que ilustra lo que estoy tratando de hacer. http://codepen.io/aallbrig/pen/bEhjo
HTML
<div id="my-component">
<p>Hi!</p>
</div>
ReactJS
/**@jsx React.DOM*/
var BasicTransclusion = React.createClass({
render: function() {
// Below 'Added title' should be the child content of <p>Hi!</p>
return (
<div>
<p> Added title </p>
{this.props.children}
</div>
)
}
});
React.renderComponent(BasicTransclusion(), document.getElementById('my-component'));
javascript
reactjs
Andrew Allbright
fuente
fuente
this.props.children
es parte de la API del componente y se espera que se use de esta manera. Los ejemplos del equipo React usan esta técnica, como en la transferencia de accesorios y cuando se habla de un solo niño .Tenga en cuenta que proporcioné una respuesta más detallada aquí
Contenedor de tiempo de ejecución:
Es la forma más idiomática.
Tenga en cuenta que
children
es un "accesorio especial" en React, y el ejemplo anterior es el azúcar sintáctico y es (casi) equivalente a<Wrapper children={<App/>}/>
Inicialización wrapper / HOC
Puede usar un Componente de orden superior (HOC). Se han agregado al documento oficial recientemente.
Esto puede conducir a (poco) mejores rendimientos porque el componente contenedor puede cortocircuitar la representación un paso adelante con shouldComponentUpdate, mientras que en el caso de un contenedor de tiempo de ejecución, es probable que el elemento secundario sea siempre un ReactElement diferente y cause renders incluso si sus componentes extienden PureComponent.
Tenga en cuenta que
connect
Redux solía ser un contenedor de tiempo de ejecución, pero se cambió a un HOC porque permite evitar representaciones inútiles si usa lapure
opción (que es verdadera por defecto)Nunca debe llamar a un HOC durante la fase de renderizado porque crear componentes React puede ser costoso. Debería llamar a estos contenedores en la inicialización.
Tenga en cuenta que cuando se usan componentes funcionales como los anteriores, la versión HOC no proporciona ninguna optimización útil porque los componentes funcionales sin estado no se implementan
shouldComponentUpdate
Más explicaciones aquí: https://stackoverflow.com/a/31564812/82609
fuente
fuente
Facebook recomienda el uso de componentes sin estado Fuente: https://facebook.github.io/react/docs/reusable-components.html
fuente
Puedes pasarlo como un accesorio normal:
foo={<ComponentOne />}
Por ejemplo:
fuente
prefiero usar React API incorporada:
entonces puedes reemplazar el wrapper div con lo que quieras:
fuente
Puede pasar un componente a través de. los accesorios y renderizarlo con interpolación.
Luego pasaría un
prop
llamadochild
, que sería un componente Reaccionar.fuente
this.props.children
como se sugiere en otra respuesta, puede escribir a los niños como niños en lugar de atributos.<div child={this.props.child />
.React.DOM.div
, como todos los componentes principales, utiliza lachildren
matriz. Mire cómo se usa en suHello
componente, ya está usando varios hijos.Al final del juego, pero aquí hay un poderoso patrón HOC para anular un componente al proporcionarlo como accesorio. Es simple y elegante.
Suponga que
MyComponent
representa unA
componente ficticio pero desea permitir una anulación personalizada deA
, en este ejemploB
, que se ajustaA
en<div>...</div>
ay también agrega "!" al texto prop:fuente
En realidad, su pregunta es cómo escribir un Componente de orden superior (HOC). El objetivo principal de usar HOC es evitar el pegado de copias. Puede escribir su HOC como un componente puramente funcional o como una clase. Aquí hay un ejemplo:
Si desea escribir su componente principal como un componente basado en la clase:
Si desea escribir a su padre como un componente funcional:
fuente
Aquí hay un ejemplo de un componente de reacción Lista principal y cuyos accesorios contienen un elemento de reacción. En este caso, solo se pasa un solo componente de reacción de Enlace (como se ve en el render dom).
fuente
Sí, puede hacerlo utilizando accesorios, puede pasar datos del componente como un objeto como accesorios y luego dentro del componente puede importar otro componente y enlazar dinámicamente con datos de prpps. lea más sobre el componente reaccionar
fuente