uniapp页面传值总结

一、uni.navigateTo传值
(1),直接传一个数字

uni.navigateTo({
	url:'../../pages/page/pay?number=1'
})

(2),传一个变量

uni.navigateTo({
	url:'../../pages/page/pay?title='+ this.title
})

(3),传的值过长时

uni.navigateTo({
url:'../../pages/page/pay?list=' + encodeURIComponent(JSON.stringify(this.getList))
})

(4),传两个及以上变量

uni.navigateTo({
url:"../../pages/page/pay?list="+encodeURIComponent(JSON.stringify(this.getList))+ '&allprice=' +this.getAllPrice
})

(5),地址是变量时传值

uni.navigateTo({
url: k+'?RoomNo=' + this.RoomNo
})

pay.vue页面接收时

onLoad(e){
this.number = e.number
this.title = JSON.parse(e.title)
this.list = JSON.parse(decodeURIComponent(e.list))
}

二、通过缓存
uni.setStorageSync(‘key’, value); //存
uni.getStorageSync(‘key’); //取
uni.removeStorageSync(‘key’) //移除

三、组件之间
子传父:

this.$emit("function",param)

父传子
利用props

props: {
		//list接收父组件传过来数据
		list: {
			type: Array,
			value: [] 
		},
	},

四、App.vue中配置globalData

<script>
	export default {
		onLaunch: function() {
			console.log('App Launch')
		},
		onShow: function() {
			console.log('App Show')
		},
		globalData: {
		  version: '1.1.1',
		}
	}
</script>

页面中使用

var app = getApp();
this.version = app.globalData.version;

五、通过vuex全局数据管理
第一步,创建store文件夹
里面包含modules文件夹和index.js
index.js //modules文件夹下的所有js模块都可以在index.js所引入

import Vue from "vue"
import Vuex from "vuex"
import user from "./modules/user.js"

Vue.use(Vuex)

export default new Vuex.Store({
		modules:{
			user
		}
})

modules文件夹下的 user.js

export default {
	state:{
		// 登录状态
		loginStatus:false,
		// 用户token
		token:"",
		// 用户信息
		userInfo:{}
	},
	getters:{},
	mutations:{
		// 初始化登录状态
		initLogin(state,userInfo){
			console.log("用户初始化")
			if(userInfo){
				state.loginStatus = true
				state.userInfo = userInfo 
			}
		},
		// 登录
		login(state,data){
			state.userInfo = data.data.data
			state.loginStatus = true
			state.token = data.header.Authorization
			uni.setStorageSync("token",data.header.Authorization)
			uni.setStorageSync("userInfo",data.data.data)
		},
		// 退出登录
		logOut(state){
			state.loginStatus = false
			state.userInfo = {}
			state.token = ""
		}
	},
	actions:{}
}

第二步、在main.js挂载

import Vue from 'vue'
import App from './App'
import store from './store/index.js'

Vue.prototype.$store = store
Vue.config.productionTip = false
App.mpType = 'app'

const app = new Vue({
    ...App,
    store
})
app.$mount()

第三步、在页面使用

this.$store.commit('initLogin', userInfo)
  • 14
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值