In the previous post I added a React Native toggle button. In this post I will add and remove list items.
We’re going to be storing an array of meetings, adding to it and removing from it.
First, we extract a meeting into a specialized class.
export default class Meeting extends React.Component {
  render() {
    return (
      <View style={styles.meeting}>
        <Text style={styles.meetingText}>{this.props.val.startDateTime.toString()}</Text>
      </View>
    );
  }
}
The first thing to notice is the usage of props. These are passed into the Meeting component at creation time via a constructor(props). It’s possible to declare required props for a component using propTypes.
import PropTypes from 'prop-types';
Meeting.propTypes = {
  val: PropTypes.object
}
The parent component renders a list of meetings inside a scrollable view.
export default class Main extends React.Component {
  state = {
    meetings: []
  }
  render() {
    let meetings = this.state.meetings.map((val, key) => {
      return <Meeting key={key} val={val} />
    })
    return (
      <View>
        <ScrollView>
          { meetings }
        </ScrollView>
      </View>
    )
  }
}
Adding Meetings
A meeting has a start and an end date, so we will also need to remember when a meeting started.
state = {
  meetingStartedAt: null
}
A meeting is pushed into the meetings array when it ends.
endMeeting() {
  this.state.meetings.push({
    startDateTime: this.state.meetingStartedAt
  })
  this.setState({
    meetingStartedAt: null,
    meetings: this.state.meetings
  })
}
A meeting can be removed from the meetings array by key.
removeMeetingByKey(key) {
  this.state.meetings.splice(key, 1)
  this.setState({ meetings: this.state.meetings })
}
See the complete code with additional and removal wired up is in 33-minutes-app@249dd0. In the next post I will add a meeting clock timer.

