English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste capítulo, vamos aprender como combinar componentes para tornar a manutenção da aplicação mais fácil. Este método permite atualizar e alterar componentes sem afetar o resto da página.
No exemplo a seguir, o primeiro componente é App. Este componente é o dono de Header e Content. Estamos criando Header e Content separadamente e adicionando-os à árvore JSX do nosso componente App. Apenas o componente App precisa ser exportado.
import React from 'react'; class App extends React.Component { render() { return ( <div> <Header/> <Content/> </div> ); } } class Header extends React.Component { render() { return ( <div> <h1>Header</h1> </div> ); } } class Content extends React.Component { render() { return ( <div> <h2>Content</h2> <p>The content text!!!</p> </div> ); } } export default App;
Para que possamos apresentá-lo na página, precisamos importá-lo no arquivo main.js e chamar reactDOM.render(). Isso já foi feito ao configurar o ambiente.
import React from 'react'; import ReactDOM from 'react-dom'; import App from './App.jsx'; ReactDOM.render(<App /, document.getElementById('app'));
O código acima gerará o seguinte resultado.
在这个实例中,我们将设置所有者组件(App)的状态。Header O componente é adicionado da mesma forma que no exemplo anterior, pois não requer nenhum estado. Vamos criar elementos table e tbody, em vez de content marcadores, onde inseriremos dinamicamente um TableRow para cada objeto no array de dados.
Pode ser observado que usamos EcmaScript 2015A sintaxe de seta (=>) parece muito mais limpa do que a sintaxe antiga do JavaScript. Isso nos ajudará a criar elementos com menos linhas de código. É especialmente útil quando precisamos criar listas com muitos itens.
import React from 'react'; class App extends React.Component { constructor() { super(); this.state = { data: [ { "id":1, "name":"Foo", "age":""}20" }, { "id":2, "name":"Bar", "age":""}30" }, { "id":3, "name":"Baz", "age":""}40" } ] } } return ( <div> <Header/> <table> <tbody> {this.state.data.map((person, i) => <TableRow key = {i} data = {person} />)} </tbody> </table> </div> ); } } class Header extends React.Component { render() { return ( <div> <h1>Header</h1> </div> ); } } class TableRow extends React.Component { render() { return ( <tr> <td>{this.props.data.id}</td> <td>{this.props.data.name}</td> <td>{this.props.data.age}</td> </tr> ); } } export default App;
import React from 'react'; import ReactDOM from 'react-dom'; import App from './App.jsx'; ReactDOM.render(<App/, document.getElementById('app'));
Atenção, usamos key = { i } dentro da função map(). Isso ajudará o React a atualizar apenas os elementos necessários, em vez de re-renderizar toda a lista ao发生变化. Isso representa uma melhoria significativa no desempenho para uma grande quantidade de elementos dinamicamente criados.