当前位置: 首页 > 知识库问答 >
问题:

用路由器v4匹配标记给出未定义的组件

龚运乾
2023-03-14

我正在试用react router v4的本地react router

完整代码导入React,{Component}从'React';从“React-Native”导入{AppRegistry,StyleSheet,Text,View,TouchableHighlight,};从'react-router'导入{Match,Miss,MemoryRouter as Router};

  const componentFactory = (routeName) => () => (
    <View>
      <Text style={styles.route}>{routeName}</Text>
    </View>
  )

  const NavLink = ({to, children}, context) => {
    const pressHandler = () => context.router.transitionTo(to);
    return (
      <TouchableHighlight onPress={pressHandler}>
        {children}
      </TouchableHighlight>
    )
  }
  NavLink.contextTypes = {router: React.PropTypes.object}

  export default class RR4Native extends Component {
    render() {
      return (
        <Router>
          <View style={styles.container}>
            <View style={styles.routeContainer}>
              <Match exactly pattern="/" component={componentFactory('Home')}/>
              <Match pattern="/about" component={componentFactory('About')}/>
              <Match pattern="/topics" component={componentFactory('Topics')}/>
              <Miss component={componentFactory('Nope, nothing here')}/>
            </View>
            <View style={styles.container}>
              <NavLink to="/">
                <Text style={styles.routeLink}>
                  Home
                </Text>
              </NavLink>
              <NavLink to="/about">
                <Text style={styles.routeLink}>
                  About
                </Text>
              </NavLink>
              <NavLink to="/topics">
                <Text style={styles.routeLink}>
                  Topics
                </Text>
              </NavLink>
              <NavLink to="/broken">
                <Text style={styles.routeLink}>
                  Broken
                </Text>
              </NavLink>
            </View>
          </View>
        </Router>
      );
    }
  }

  const styles = StyleSheet.create({
    container: {
      flex: 1,
      justifyContent: 'center',
      alignItems: 'center',
      backgroundColor: '#F5FCFF',
    },
    route: {
      color: '#701010',
      fontSize: 40
    },
    routeLink: {
      color: '#0000FF'
    },
    routeContainer: {
      flex: 1,
      justifyContent: 'center'
    }

  });

  AppRegistry.registerComponent('RR4Native', () => RR4Native);

共有1个答案

章远航
2023-03-14

react-router的最终版本中,没有match,也没有miss。您只需要使用route。在您的情况下,您需要执行以下操作:

<View style={styles.routeContainer}>
    <Switch>
        <Route exact path="/" component={componentFactory('Home')}/>
        <Route path="/about" component={componentFactory('About')}/>
        <Route path="/topics" component={componentFactory('Topics')}/>
        <Route component={componentFactory('Nope, nothing here')}/>
    </Switch>
</View>

有关详细信息,请参阅React路由器文档中的NoMatchExample。

 类似资料:
  • 向下滚动当前代码&错误 这段代码单独工作并呈现我的'app'组件 但是当我试图在我的应用程序组件中添加一个“链接”组件时,它将无法识别它。

  • 我正在使用React Router创建一个多页面应用程序。我的主要组件是

  • 大家好,我不知道发生了什么事。我有以下路线: 只有路径为“/”的路由和路径为“/patient/:id”的路由才有效,其他3条路由只是没有显示与路径对应的组件。 这就是我进入路线的方式。我有一个标题组件,上面有正确的链接。见下文 在头组件中,我从'react router dom'导入{Link};在我声明路由的文件中,我从'react router dom'导入{BrowserRouter,Ro

  • Tango支持4种形式的路由匹配规则 静态路由 tg.Get("/", new(Action)) tg.Get("/static", new(Action))匹配 URL:/ 到 Action结构体的Get函数 匹配 URL:/static 到 Action结构体的Get函数 命名路由 tg.Get("/:name", new(Action)) tg.Get("/(:name)", new(Act

  • 问题内容: 我正在使用ReactRouter创建一个多页面应用程序。我的主要组件是,它呈现了所有到子组件的路由。我正在尝试通过路线传递道具,根据我所做的一些研究,子组件利用最常见的方式来挖掘传递下来的道具是通过它们继承的对象。但是,这个对象对我来说是未定义的。在子组件的函数上,我和我返回了一个看起来像这样的对象 看起来根本不像我期望的道具。这是我的详细代码。 父组件(我试图在所有子组件中将“ hi

  • 我的更新有问题,,当我点击更新页面提交,,错误显示如下 (1/1)未定义的InvalidArgumentExcepationRout[kontak]。 这是我的路线 我的控制器 . 这是我的编辑。刀身php ..................... 当我单击“编辑”页面上的“提交”按钮时。。错误显示如上所示??我的代码有什么问题??