如何在React Native

时间:2016-05-22 21:35:36

标签: ios listview react-native state

我正在尝试创建一个用于管理类别和项目的React Native应用程序。它使用 React Native Store 来保存所有本地数据。该应用不应该也不会使用互联网API。它只是本地和离线。

我设法在调用addCategory(title)函数时将项目推送到数据库,但它没有更新categories.js内的状态

由于缺乏关于本地反应state的文档,我想知道这里是否有人知道如何通过列表视图更新它以及从categories更改为{ {1}}到items组件。

我正在使用React Native 0.26

index.ios.js

details

categories.js

... // default imports
import Store from 'react-native-store'

const categorieslist = require('./categories')
const DB = {
  'categories': Store.model('category'),
  'items': Store.model('item')
}

class testapp extends Component {
  componentDidMount() {
    this.reload()
  }
  reload() {
    DB.categories.find().then(resp => this.setState({
      categories: resp
    }))
  }
  addCategory(title) {
    var newTitle = title;
    DB.categories.add({
      title: newTitle,
      games: []
    })
    this.reload()
  }
  render() {
    return (
      <View>
        <NavigatorIOS
          ...
          initialRoute={{
            component: categorieslist,
            title: 'Categories',
            rightButtonTitle: 'New',
            onRightButtonPress: () => {this.addCategory('title')},
            passProps: {
              categories: this.state.categories
            }
          }}
        />
      </View>
    )
  }
}
... // AppRegistry registerComponent and stuff

1 个答案:

答案 0 :(得分:0)

react-native中的状态与react(web)相同。所以你可以参考这里的文档:https://facebook.github.io/react/docs/component-api.html

state是每个组件的本地。在reload方法中,您setStatethistestapp组件,而不是categories组件。

您必须通过道具将您的州传递给类别组件。