React-Native + Redux Пример: инвариантные объекты нарушения недопустимы в качестве дочернего элемента реагирования (найдены объекты с ключами {s1}) - PullRequest
0 голосов
/ 27 июня 2018

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

          export default class App extends Component{
             render() {
              const store = createStore(reducers, {},applyMiddleware(ReduxThunk));
              return (
               <Provider store={store}>
                  <Picker />
                </Provider>
              );
            }
          }

Picker.js

        class Picker extends Component {
          ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 });
          constructor() {
            super();
            this.onChangeText = this.onChangeText.bind(this);
            this.handleDestroyItem = this.handleDestroyItem.bind(this);
          }
          ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 });

          onChangeText(text) {
            this.props.dispatch({ type: 'ADD_ITEM', text });
          }
          handleDestroyItem(id) {
            this.props.dispatch({ type: 'REMOVE_ITEM', id });
          }
          renderRow = (rowData, sectionID, rowID) => {
            return (
              <View>
                <Text>{rowData}</Text>
                <TouchableOpacity
                  onPress={() => {
                    this.handleDestroyItem(rowID);
                  }}>
                  <Text>Delete</Text>
                </TouchableOpacity>
              </View>
            );
          };
          render() {
            let data = [{ value: 'Banana' }, { value: 'Mango' }];
            return (
              <View>
                <Dropdown label="Add Commodity"  data={data}   onChangeText={this.onChangeText} />
                <ListView dataSource={this.ds.cloneWithRows(this.props.dataSource)}   renderRow={this.renderRow}     enableEmptySections />
              </View>
            );
          }
        }
        const dataSource = new ListView.DataSource({
          rowHasChanged: (r1, r2) => r1 !== r2,
        });

        function mapStateToProps(state) {
          return {
            dataSource: dataSource.cloneWithRows(state),
          };
        }

папка редуктора имеет индексный файл, который имеет редуктор и связан с datareducer

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