Как сделать динамический флажок в React Native

Я делаю приложение для реагирования, в котором мне нужно установить флажок во время выполнения. Я имею в виду, что с сервера я получу объект json, который будет иметь идентификатор и метку для флажка. Теперь я хочу знать, что после получения данных с сервера, как я также делаю флажок, как я могу обрабатывать флажок, я имею в виду, сколько флажков будет там, оно не будет статическим, поэтому как я могу объявить переменные состояния, которые могут обрабатывать флажок. Также как я могу обработать событие onPress флажка .Пожалуйста, помогите мне с кодом. Заранее спасибо

Можете ли вы поделиться кодом вашего компонента?

Guruparan Giritharan 13.03.2019 06:19

Извините, что говорю вам, но я до сих пор не закодировал этот компонент. Вы можете объяснить мне концепцию, которую я могу применить в реакции на нативный

Abhi Singh 13.03.2019 06:30
Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
4
2
4 554
2

Ответы 2

Концепция будет заключаться в использовании массива в состоянии и установке массива состояний с данными, полученными из ответа службы. Флажок недоступен на обеих платформах, поэтому вам придется использовать реактивные нативные элементы. И вы можете использовать функцию карты для отображения флажков из массива и иметь onPress для соответствующего изменения состояния. Код будет таким, как показано ниже. Вам также придется подумать о сохранении проверенного значения в состоянии.

import React, { Component } from 'react';
import { View } from 'react-native';
import { CheckBox } from 'react-native-elements';

export default class Sample extends Component {

    constructor(props) {
        super(props);
        this.state = {
            data: [
                { id: 1, key: 'test1', checked: false },
                { id: 2, key: 'test1', checked: true }
            ]
        };
    }

    onCheckChanged(id) {
        const data = this.state.data;

        const index = data.findIndex(x => x.id === id);
        data[index].checked = !data[index].checked;
        this.setState(data);
    }

    render() {
        return (<View>
            {
                this.state.data.map((item,key) => <CheckBox title = {item.key} key = {key}  checked = {item.checked} onPress = {()=>this.onCheckChanged(item.id)}/>)
            }
        </View>)
    }
}

Могу я узнать, как вы сможете управлять состоянием здесь? Так как может быть N количество флажков

MayankBudhiraja 25.08.2020 12:05

OnCheckChanged получает идентификатор и обновляет состояние, пока у вас есть ключ, он будет работать нормально, другой вариант - использовать индекс, учитывая, что индекс всегда один и тот же

Guruparan Giritharan 25.08.2020 12:12

Хорошо! Что может быть, если нам нужно привязать чекбокс к текстовому вводу?

MayankBudhiraja 25.08.2020 13:45

По мере обновления состояния вы можете использовать значение, я не понял ваш вопрос

Guruparan Giritharan 25.08.2020 15:48

Вот пример, как вы можете это сделать. Вы можете поиграть с кодом, чтобы лучше понять, как он работает.

export default class App extends React.Component {
  state = {
    checkboxes: [],
  };

  async componentDidMount() {
    // mocking a datafetch
    setTimeout(() => {
      // mock data
      const data = [{ id: 1, label: 'first' }, { id: 2, label: 'second' }];
      this.setState({
        checkboxes: data.map(x => {
          x['value'] = false;
          return x;
        }),
      });
    }, 1000);
  }
  render() {
    return (
      <View style = {styles.container}>
        <Text style = {styles.paragraph}>
          {JSON.stringify(this.state)}
        </Text>
        {this.state.checkboxes.length > 0 &&
          this.state.checkboxes.map(checkbox => (
            <View>
              <Text>{checkbox.label}</Text>
              <CheckBox
                onValueChange = {value =>
                  this.setState(state => {
                    const index = state.checkboxes.findIndex(
                      x => x.id === checkbox.id
                    );
                    return {
                      checkboxes: [
                        ...state.checkboxes.slice(0, index),
                        { id: checkbox.id, label: checkbox.label, value },
                        ...state.checkboxes.slice(index+1),
                      ],
                    };
                  })
                }
                value = {checkbox.value}
                key = {checkbox.id}
              />
            </View>
          ))}
      </View>
    );
  }
}

Другие вопросы по теме