2015-04-19 1 views
0

По сообщениям РЕАКТА документация:React DropdownList - дети с установленным статусом или без гражданства?

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

Давайте возьмем, например, DropDownList и разбить его на более мелкие части: DropdownList

Применяя РЕАКТ идеологию на DROPDOWNLIST будет означать, что компонент DropDownList управляет состоянием и для всплывающего окна и списка, ответив также к событиям пользовательского интерфейса. Очень хорошую реализацию можно найти здесь http://jquense.github.io/react-widgets/docs/#/dropdown-list (см. Код GitHub).

Другим подходом может быть для каждого компонента управлять своим состоянием, где это возможно. Я попытался написать минималистскую версию моего собственного DropdownList (пожалуйста, помните о CSS ..), который использует список с состоянием. Краткий пример того, как список управляет состоянием:

_onMouseDown: function (index, event) { 

    if(!this.state.data[index].disabled) { 
     this.setState({ 
      selectedIndex: index, 
      focusedIndex: index 
     }); 

     this.props.onSelectedIndexChange(event, index); 
    } else { 
     event.preventDefault(); 
    } 
} 

Вот полный jsfiddle: http://jsfiddle.net/5d30pctd/

Я не буду сравнивать эти два подхода, так как имеют сильные и слабые стороны, а спросить, как потребителям было бы проще повторно использовать: список состояния или списка без учета состояния?

ответ

1

Для сильно повторяющихся компонентов я рекомендую использовать гибридный подход. Если пользователь компонента проходит value и onChange, он становится контролируемым компонентом, и его значение контролируется только свойством value. Если нет value, компонент сохраняет свое состояние. Вот как работают встроенные компоненты формы, такие как <input>. This StackOverflow answer содержит более подробное обсуждение этой темы.

+0

Спасибо за ответ. Я прошу об этом больше в том, что у вас есть список состояний, который можно фильтровать/сортировать/настраивать/доступный/сгруппированный/множественный выбор/прокручиваемый. Это в значительной степени поможет собрать и другие компоненты, такие как меню или двойной выбор списка. Если список сохранен, то выбор меню или двойного списка будет проще реализовать, так как List управляет своим собственным состоянием, и вам не нужно писать код для него в родительских компонентах. –

+0

@ cosmi.nu Gotcha. Я думаю, что моя рекомендация по-прежнему стоит в этом случае; если List только с сохранением состояния, для меню или DoubleListSelection становится очень сложно управлять компонентами. Если он управляется как контролируемым, так и неконтролируемым, меню и DoubleListSelection также могут обрабатывать оба. –

Смежные вопросы