javascript - 如何从外部 MeteorListView 文件调用 React-Native 导航器?

标签 javascript meteor react-native

这可能更像是一个 JavaScript 问题,而不是一个 React-Native/Meteor 问题:我正在向现有的 React Native 应用程序添加 Meteor 连接,但遇到了导航障碍。我以前有一个 ListView,它每行提供一个 onPress 函数来调用导航。为了与 Meteor 的 createContainer 协议(protocol)保持一致,我(在我的例子中)使用了“PuzzlesContainer”来代替 ListView,在单独的文件中,它引用

const PuzzlesContainer = ({ puzzlesReady }) => {
  return (
    <Puzzles
      puzzlesReady={puzzlesReady}
    />
  );
};
export default createContainer(() => {
  const handle = Meteor.subscribe('puzzles-list');
  return {
    puzzlesReady: handle.ready(),
  };
}, PuzzlesContainer);

此文件包含“Puzzles”文件,该文件也是一个包含 MeteorListView 的 const 函数:

const Puzzles = ({ puzzlesReady }) => {
  if (!puzzlesReady) {
    return null;//<Loading />;
  }else{

  return (
    <View style={launcherStyle.container}>
        <MeteorListView
            collection="puzzles"
            renderRow={
                (puzzle) =>
                <View >
                    <TouchableHighlight style={launcherStyle.launcher} onPress={()=>onSelect(puzzle.text)}>
                         <Text style={launcherStyle.text}>{puzzle.text}</Text>
                    </TouchableHighlight>
                </View>
. . .

我的问题是现在没有原始路由方案的上下文,所以当我调用时

this.props.navigator.push

它给出“未定义不是一个对象(评估'this.props.navigator')”。我该如何处理这个问题?

最佳答案

一种方法是查看新的 NavigationExperimental,它以 redux 方式处理 nagivator。

另一种方法是,尽管我不知道是否建议这样做,但通过将导航器组件分配给模块来全局化它。可以是这样的

// nav.js
let nav = null

export function setNav = _nav => nav = _nav

export function getNav = () => {
  if (nav) {
    return nav
  } else {
    throw "Nav not initialized error" 
  }
}

然后,当您第一次拿到导航器时,请执行以下操作

// component.js
import { Navigator } from 'react-native'
import { setNav } from './nav'

// ...
  renderScene={ (route, navigator) => {
    setNav(navigator)
    // render scene below
    // ...
  }}

关于javascript - 如何从外部 MeteorListView 文件调用 React-Native 导航器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41155723/

相关文章:

javascript - 从选择多个 ="multiple"选项下拉列表中获取所有选定项目的名称

javascript - 如何检查字符串是否是 php 中的 javascript 对象?

Meteor 文件上传不工作

react-native - 适用于 Android 的 React Native MaskedView

javascript - 为什么在 Internet Explorer 中访问 localStorage 对象会抛出错误?

JavaScript:即使为 False,也不会停止(意外的 token 函数)

javascript - Meteor - 箭头函数打破 ES6 中的 #each 循环

meteor - 在 Meteor 中,如何设置对模板数据上下文的子部分的响应式(Reactive)依赖?

javascript - 相机胶卷添加边框颜色

javascript - 如何获取嵌套对象的键