官术网_书友最值得收藏!

  • React Native By Example
  • Richard Kho
  • 328字
  • 2021-07-09 18:21:31

Creating the TasksList component

Going back to the proposed file structure from earlier, your project should look like this:

Let's start by writing our first component--the TasksList module.

The first thing we will need to do is import our dependency on React:

import React, { Component } from 'react'; 

Then, we'll import just the building blocks we need from the React Native (react-native) library:

import { 
ListView,
Text
} from 'react-native';

Now, let's write the component. The syntax for creating a new component in ES6 is as follows:

export default class TasksList extends Component { 
...
}

From here, let's give it a constructor function to fire during its creation:

export default class TasksList extends Component { 
constructor (props) {
super (props);
const ds = new ListView.DataSource({
rowHasChanged: (r1, r2) => r1 !== r2
});

this.state = {
dataSource: ds.cloneWithRows([
'Buy milk',
'Walk the dog',
'Do laundry',
'Write the first chapter of my book'
])
};
}
}

Our constructor sets up a dataSource property in the TasksList state as equal to an array of hardcoded strings. Again, our first goal is to simply render a list on the screen.

Next up, we'll utilize the render method of the TasksList component to do just that:

  render () { 
return (
<ListView
dataSource={ this.state.dataSource }
renderRow={ (rowData) =>
<Text> { rowData } </Text> }
/>
);
}

Consolidated, the code should look like this:

// Tasks/app/components/TasksList/index.js 

import React, { Component } from 'react';

import {
ListView,
Text
} from 'react-native';

export default class TasksList extends Component {
constructor (props) {
super (props);

const ds = new ListView.DataSource({
rowHasChanged: (r1, r2) => r1 !== r2
});

this.state = {
dataSource: ds.cloneWithRows([
'Buy milk',
'Walk the dog',
'Do laundry',
'Write the first chapter of my book'
])
};
}

render () {
return (
<ListView
dataSource={ this.state.dataSource }
renderRow={ (rowData) =>
<Text>{ rowData }</Text> }
/>
);
}
}

Great! That should do it. However, we need to link this component over to our application's entry point. Let's hop over to index.ios.js and make some changes.

主站蜘蛛池模板: 乾安县| 夏津县| 三门峡市| 蒲城县| 固镇县| 永年县| 黑河市| 恩平市| 于田县| 渝北区| 吉安县| 木兰县| 那坡县| 家居| 即墨市| 亚东县| 浦县| 天等县| 香格里拉县| 莱阳市| 芜湖县| 新平| 改则县| 抚州市| 洛阳市| 正镶白旗| 邛崃市| 深泽县| 祥云县| 大城县| 砚山县| 襄汾县| 进贤县| 永宁县| 太原市| 达尔| 桦川县| 枣强县| 福建省| 柯坪县| 韶关市|