我是React Native的新手,在尝试构建iPhone应用程序时遇到了这个问题。

我的代码是这样的:

var React = require('react-native');
var MyListView = require('./MyListView');  // which renders a <ListView>...</ListView>

var SearchPage = React.createClass({
  onSubmitEditing: function () { /* do something */ },
  render: function() {
    return (
      <ScrollView>
        <TextInput onSubmitEditing={this.onSubmitEditing} />
        <MyListView />
      </ScrollView>
    )
  },
})


搜索(MyListView事件)时,我需要更改onSubmitEditing(更新数据源)的状态。我应该怎么做?我以为如果可以将<MyListView />用作JavaScript对象,可能会有一些解决方案,但我不知道如何做。

任何帮助将不胜感激!提前致谢!

最佳答案

您有2个选择:


假设在SearchPage组件中您知道数据将是什么,则可以将其作为道具传递给MyListView:
但是,我认为更好的选择是将数据存储在商店中(通量),然后在商店中过滤列表。我做了这样的事情:

reg = new RegExp(sanitizer.escapeRegExp(query), "i")filteredList = _.filter @initialDataSource(), (item) => item.name.match(reg)this.setState({dataSource: this.state.dataSource.cloneWithRows(filteredList)})


我正在使用lodash筛选列表,然后加载dataSource。您可以仅将查询传递给MyListView,这更“干净”
<MyListView query={queryValue} />

07-25 20:44