此篇文章是基于 react路由系列01___ 在react脚手架里使用React-router(简单入门) react路由系列02___ 二级路由 上写的,如果你有路由基础,可以直接看这篇文章,如果没有路由基础,则建议先看前两篇文章。

react路由传参(组件之间传值) _ 通过 query

React路由传参的三种方式

二、 通过 query (以 GoodsList .js 为例

解释:组件之间传递参数时,一般都是键值对的方式,如:username=tianwater。

Q uery的方式不用 配置路由表。 只改 Link(Navlink)标签处就行

1、传值(需要修改两个地方):
1)、 Link(NavLink)处 (键值对全在此处写)

给Link标签的to属性赋的值是个location对象。 L ocation对象包括pathname属性和query属性。

<Link to= { {pathname:'/gla/Pencil',query:{id:'01009'}}} >铅笔</Link>

<Link to= { {pathname:'/gla/Eraser',query:{name:'橡皮01'}}} >橡皮01</Link>

2、获取值:
1)、在“Pencil.js”里

商品编号:{this.props.location.query.id}<br/>

2)、在“Eraser.js”里

商品名称:{this.props.location.query.name}<br/>

PS:经过以上的更改后,文件“GoodsList.js”,“Pencil.js”,“Eraser.js”的代码分别为(可以复制以下代码):

1)、GoodsList.js文件:

import React, { Component } from 'react';

import { BrowserRouter, Route,NavLink} from 'react-router-dom';

import Pencil from './Pencil';

import Eraser from './Eraser';

class GoodsList extends Component{

render(){

return (

<BrowserRouter>

<div>欢迎来到商品列表页面</div><br/>

<Link to= { {pathname:'/gla/Pencil',query:{id:'01009'}}} >铅笔</Link>

<Link to= { {pathname:'/gla/Eraser',query:{name:'橡皮01'}}} >橡皮01</Link>

<Route path='/gla/Pencil' component={Pencil} />

<Route path='/gla/Eraser' component={Eraser} />

</BrowserRouter>

export default GoodsList;

2)、Pencil.js文件:

import React,{Component} from 'react';

class Pencil extends Component{

render(){

return (

商品编号:{ this.props.location.query.id }<br/>

商品名称:铅笔<br/>

商品描述:铅笔好,铅笔好,铅笔写错还可以擦掉<br/>

export default Pencil;

3)、Eraser.js文件:

import React, { Component } from 'react';

class Eraser extends Component{

render(){

return (

商品编号:01002<br/>

商品名称:{ this.props.location.query.name }<br/>

商品描述:橡皮好,橡皮好,橡皮可以擦掉铅笔写<br/>

export default Eraser;

ok,第二种方式大功告成!

下一篇是 第三种方式:state

此篇文章是基于react路由系列01___ 在react脚手架里使用React-router(简单入门)和react路由系列02___ 二级路由上写的,如果你有路由基础,可以直接看这篇文章,如果没有路由基础,则建议先看前两篇文章。react路由传参(组件之间传值)_通过queryReact路由传参的三种方式:二、通过query(以GoodsList.js为例)解释:组件之间传... react-router-dom v。^ 4.0.0或^ 5.0.0 import with Query Params from ' react-router - query -params' ; const ExampleComponent = ( { query Params , set Query Params , } ) = ( query Params: { JSON . stringify ( query Params ) } < / div > <Route path='/path/:name' component={Path}/> <link to="/path/2">xxx</Link> this.props.history.push({pathname:"/path/" + name}); 读取参数用:this.props.match.params.name 优势 : 刷新地址栏,参数依然存在 缺点:只能传字符串,并且,如果传的值太多的话,url会变得长而丑陋。 2. query Route定义方式:&lt;Route path='/About/:id' component={About} /&gt; Link组件:&lt;Link to="/path/通过通配符传参"&gt;About&lt;/Link&gt; 参数获取:this.props.location. query 优点:简单快捷,并且,在刷新页面的时候,参数不会丢失。 缺点:只能传字符串,...
使用查询字符串解析的 React Router 钩子 通过useHistory 库来useLocation基本的钩子( useLocation和useHistory )的小程序包,使它们更加了解 。 首先,它导出一个简单的use Query Params钩子,以读取和操作URL查询字符串(对于在URL中编码有排序顺序或页码的UI有用)。 有关更多详细信息,请参见使用说明。 query -string 对等依赖 react-router-dom @^5.1或更高版本(需要 路由 器挂钩) 该软件包也是用ES6编写的,因此要使用它,您需要一些编译器,例如babel才能在node_modules上运行。 $ npm install react-router - query -hooks react-router-dom $ yarn add react-router - query -
vue里面有两个属性this.$ router 和this.$route。this.$ router 为全局 路由 对象,this.$route是当前 路由 对象。 vue 路由 传参有三种方法,动态 路由 传参, query 路由 传参,params 路由 传参,每种 路由 传参需要在 路由 文件里配置好 路由 //动态 路由 传参 path: "/dongtaoluyou/:id", component: dongtaichuancan, name: "dongtaoluyou"
React Query 通常被描述为 React 缺少的数据获取(data-fetching)库,但是从更广泛的角度来看,它使 React 程序中的获取,缓存,同步和更新服务器状态变得轻而易举。 查询 Queries 查询是一种对于与 唯一键值 相关联的异步数据源的声明性依赖。查询可以与任何基于Promise的方法(包括GET和POST方法)一起使用,以从服务器获取数据。如果您的方法修改了服务器上的数据,建议改用 Mutations要在你的组件或自定义 Hook 中订阅一个查询,至少需要以
本文主要介绍 React Router 定义 路由 之后如何 传值 ,有关 React React Router 的基础请参考阮老师的博客注:本文示例 React Router 版本为:3.0.2,使用前请注意检查版本一.props.params官方例子使用 React router 定义 路由 时,我们可以给<Route>指定一个path,然后指定通配符可以携带参数到指定的path: 首先定义 路由 到UserPage页面
React Native中实现侧滑菜单可以使用第三方组件库,如 react -native-drawer、 react -native-side-menu等,也可以自己手写实现。以下是手写实现的简单示例: 1. 安装 react -native-gesture-handler库 ```bash npm install react -native-gesture-handler 2. 在App.js中引入GestureHandlerRootView,并在render方法中添加侧滑菜单和主页布局 ```javascript import { GestureHandlerRootView } from ' react -native-gesture-handler'; class App extends Component { constructor(props) { super(props); this.state = { isMenuOpen: false, render() { return ( <GestureHandlerRootView style={{ flex: 1 }}> <View style={{ flex: 1 }}> {this.state.isMenuOpen ? <View style={{ flex: 1, backgroundColor: 'white' }}> <Text>侧滑菜单</Text> </View> : <View style={{ flex: 1, backgroundColor: 'white' }}> <Text>主页布局</Text> </View> </View> </GestureHandlerRootView> 3. 添加手势识别和动画 ```javascript import { PanGestureHandler, State } from ' react -native-gesture-handler'; class App extends Component { constructor(props) { super(props); this.state = { isMenuOpen: false, gestureState: State.UNDETERMINED, translateX: new Animated.Value(0), this.onGestureEvent = Animated.event( [{ nativeEvent: { translationX: this.state.translateX } }], { useNativeDriver: true } onHandlerStateChange = event => { if (event.nativeEvent.oldState === State.ACTIVE) { const { translationX } = event.nativeEvent; if (translationX < -50) { this.setState({ isMenuOpen: true }); Animated.spring(this.state.translateX, { toValue: -200, useNativeDriver: true, }).start(); } else { Animated.spring(this.state.translateX, { toValue: 0, useNativeDriver: true, }).start(); render() { return ( <GestureHandlerRootView style={{ flex: 1 }}> <View style={{ flex: 1 }}> <PanGestureHandler onGestureEvent={this.onGestureEvent} onHandlerStateChange={this.onHandlerStateChange} <Animated.View style={{ flex: 1, transform: [{ translateX: this.state.translateX }], {this.state.isMenuOpen ? <View style={{ flex: 1, backgroundColor: 'white' }}> <Text>侧滑菜单</Text> </View> : <View style={{ flex: 1, backgroundColor: 'white' }}> <Text>主页布局</Text> </View> </Animated.View> </PanGestureHandler> </View> </GestureHandlerRootView> 这样就可以实现一个简单的侧滑菜单了。需要注意的是,手写实现的侧滑菜单可能会存在一些问题,如滑动冲突、性能问题等,使用第三方组件库可以避免这些问题。