reactjs - 反应路由器找不到变量:历史
问题描述
设置一个简单的登录后,我尝试使用链接到另一个组件onPress={() => history.push('/Page')}
但在日志中显示:
找不到变量:历史
问题是:使用 NativeRouter 和 Router 仅当组件只有路由器和链接时才有效。但如果组件有任何其他东西链接文本输入、文本等,则输入和文本会继续显示。
在下面的示例中,单击链接后,即使使用 switch 和 exact,登录组件和注册组件也会显示在同一屏幕上。
所以唯一的方法似乎是使用历史。但添加后显示这个
找不到变量:历史
有人可以在此反应路由器问题上提供提示吗?
谢谢
import React, { Component } from 'react';
import { Text, TextInput, View, StyleSheet } from 'react-native';
import { Card, Button, CardSection, Input} from '../components';
import { NativeRouter, Router, Link } from 'react-router-native'
import Home from './Home';
import Signup from './Signup';
class Login extends Component {
render() {
return (
<NativeRouter>
<Card>
<Text> Login </Text>
<Input placeholder = "Email" />
<Input secureTextEntry = { true } placeholder = "Password"/>
<Button onPress={xxx}>
Log in
</Button>
<Link to='/Signup'><Text>create account</text></Link>
<Router exact path="/Signup" component={Signup} />
</Card>
</NativeRouter>
);
}
}
export default Login;
解决方案
简而言之,您有 3 个选项可供选择history.push()
:
推荐阅读
- dart - Flutter如何发布json数组
- amazon-web-services - Terraform 通过重新执行相同的 main.tf 创建多个 vpc
- javascript - 加载 AJAX 复选框的 Switchery 初始化错误
- amazon-web-services - 对其他 IAM 用户隐藏 EC2 实例
- .net - 为 ASP.NET Core lambda 函数 serverless.template 文件设置 AWS Authorizer 条目
- loops - Haskell:没有 (Num ()) 的实例 - 定义我自己的一元循环
- java - 设计 - 消费者模块的全局设置
- c# - c# - 如何用内联样式标签将span替换为c#中的b标签?
- reactjs - Reactjs map 函数不渲染组件
- node.js - 无法将 React 应用程序部署到 Kubernetes