Использование связанных списков в поле выбора Checkerbox - PullRequest
1 голос
/ 10 февраля 2020

Я создал структуру данных Linked-List в своем реактивном приложении, которое я хочу перемещать между экранами, а затем выбираю узел на основе меню выбора флажка.

Я понимаю, что могу переместить список с использованием response-native-navigation, поэтому теперь я хотел бы отобразить список со списком флажков, чтобы выбрать несколько узлов и выполнить над ними действия. Проблема, которую я вижу, состоит в том, что списки чекбоксов используют определенные константные массивы элементов, которые затем перечисляются.

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

Есть ли способ ввода связанный список в список чекбоксов или мне нужно создать массив?

Как бы я go о любой из опций, если им нужно динамически обновлять?

1 Ответ

0 голосов
/ 10 февраля 2020

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

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

Другая возможность заключается в расширении встроенного класса Array в вашем связанном списке. структура данных для обеспечения совместимости.

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

Есть ли способ добавить связанный список в список чекбоксов или мне нужно создать массив?

Как бы я go о любой из опций, если им нужно динамически обновлять?

Есть несколько git хранилищ , которые добавляют поддержку для того, что вы хотите достичь ( вот пример , не стесняйтесь исследовать npm для более подробной информации.

Другой возможностью, если вы хотите, чтобы ваши элементы динамически обновлялись, будет инкапсулировать их в React.Component для рендеринга:

// YourNode.js
import React, { Component } from 'react';
import { CheckBox } from 'react-native';

export default class YourNode extends Component {
  constructor(props) {
    super(props);
    this.state = {
      checked: false,
    };
  }

  selectItem = () => {
    const { onPress } = this.props;
    // Update the state
    this.setState({ checked: !this.state.checked });
    onPress();
  };

  render() {
    const { node } = this.props;
    // You may want to render more things like `Text` or `View` components based on
    // the node's content
    return (
    <CheckBox
      value={this.state.checked}
      onValueChange={this.selectItem}
    />
    );
  }
}

import YourNode from './YourNode';

// YourScreen.js

render() {
  //...
  // This will render a `YourNode` component for each one of your nodes.
  {yourList.map((item, index)) => {
      return (<YourNode node={item} onPress{() => this.selectedNodes.push(item)}>)
    }
  }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...