查询字符串的形式传参

在Taro中进行传参,一般会使用查询字符串的形式,也就是在跳转的url上,加一个?问号的形式,然后后边跟上参数。
现在我们就在Blog.jsx页面用,useState的形式声明一个变量,再通过跳转把值带到Index.jsx页面。

  1. import Taro ,{useState}from '@tarojs/taro'
  2. import {View , Text ,Button} from '@tarojs/components'
  3. function Blog(){
  4. const [blogTitle,setBlogTitle]=useState('JSPang Blog')
  5. const gotoIndex=()=>{
  6. Taro.navigateTo({url:'/pages/index/index?blogTitle='+blogTitle})
  7. }
  8. return (
  9. <View>
  10. <Text>Blog Page</Text>
  11. <Button onClick={gotoIndex}>我要去Index页面</Button>
  12. </View>
  13. )
  14. }
  15. export default Blog

接收传递的参数并显示到页面上

现在参数已经可以传递了,那如何在Index.jsx进行接收那,其实也非常简单。只要使用this.$router.params就可以进行接收。
当然我们要接收参数,可以在useEffect()中进行,

  1. useEffect(()=>{
  2. setBlogTitle(this.$router.params.blogTitle)
  3. },[])
  1. import Taro, { useState ,useEffect} from '@tarojs/taro'
  2. import { View, Text } from '@tarojs/components'
  3. import Child from './child.jsx'
  4. import './index.less'
  5. function Index(props){
  6. const [userName ,setUserName] = useState('Hello World!!!!')
  7. const [blogTitle,setBlogTitle] = useState('')
  8. useEffect(()=>{
  9. setBlogTitle(this.$router.params.blogTitle)
  10. },[])
  11. return (
  12. <View>
  13. <Text>{userName}</Text>
  14. <Child userName={userName}></Child>
  15. <View>{blogTitle}</View>
  16. </View>
  17. )
  18. }
  19. export default Index

多参数的传递和接收

我们再来看看如何传递多个参数和多个参数的接收,传递的时候只要用&进行链接就可以了,比如下面这样。

  1. Taro.navigateTo({url:'/pages/index/index?blogTitle='+blogTitle+'&introduce='+introduce})
  1. import Taro ,{useState}from '@tarojs/taro'
  2. import {View , Text ,Button} from '@tarojs/components'
  3. function Blog(){
  4. introduce
  5. const [blogTitle,setBlogTitle]=useState('JSPangBlog')
  6. const [introduce,setIntroduce]=useState('111111')
  7. const gotoIndex=()=>{
  8. Taro.navigateTo({url:'/pages/index/index?blogTitle='+blogTitle+'&introduce='+introduce})
  9. }
  10. return (
  11. <View>
  12. <Text>Blog Page</Text>
  13. <Button onClick={gotoIndex}>我要去Index页面</Button>
  14. </View>
  15. )
  16. }
  17. export default Blog

接收参数跟单参数接收方法一样

  1. import Taro, { useState ,useEffect} from '@tarojs/taro'
  2. import { View, Text } from '@tarojs/components'
  3. import Child from './child.jsx'
  4. import './index.less'
  5. function Index(props){
  6. const [userName ,setUserName] = useState('Hello World!!!!')
  7. const [blogTitle,setBlogTitle] = useState('')
  8. const [introduce,setIntroduce]=useState('')
  9. useEffect(()=>{
  10. setBlogTitle(this.$router.params.blogTitle)
  11. setIntroduce(this.$router.params.introduce)
  12. },[])
  13. return (
  14. <View>
  15. <Text>{userName}</Text>
  16. <Child userName={userName}></Child>
  17. <View>{blogTitle}</View>
  18. <View>{introduce}</View>
  19. </View>
  20. )
  21. }
  22. export default Index