• 技术文章 >web前端 >uni-app

    聊聊uniapp的传递方法

    PHPzPHPz2023-04-27 09:31:24原创25

    Uniapp是一个提供了跨平台开发的解决方案,它可以让我们一次编写代码,就可以在多个平台上运行,例如iOS、Android和Web等。对于开发者来说,这是一件特别好的事情,因为节省了很多时间和精力。在Uniapp的开发中,我们经常需要在页面之间传递数据和方法,那么本文将为大家介绍一些传递方法。

    1.使用Vuex来传递数据

    在Uniapp中,我们可以使用Vuex来共享数据,Vuex是一个专为Vue.js应用程序开发的状态管理模式,它可以管理全局的数据状态。我们可以在store中定义state、mutations、actions、getters等来进行数据的传递。在各个组件中,如果需要获取数据,我们只需要使用mapState、mapMutations、mapActions、mapGetters等函数即可方便地获取和修改数据。

    在store.js文件中定义state:

    state:{
        count:0
    },
    mutations:{
        increment(state){//自增
            state.count++
        },
        decrement(state){//自减
            state.count--
        }
    },
    actions:{
        asyncIncrement({commit}){//异步自增
            setTimeout(()=>{
                commit('increment')
            },1000)
        },
        asyncDecrement({commit}){//异步自减
            setTimeout(()=>{
                commit('decrement')
            },1000)
        }
    }

    在使用页面中获取和修改数据:

    import {mapState,mapMutations,mapActions} from 'vuex'
    export default {
        data(){
            return{
            }
        },
        computed:{
            ...mapState([
                'count'
              ])
        },
        methods:{
            ...mapMutations([
                'increment',
                'decrement'
            ]),
            ...mapActions([
                'asyncIncrement',
                'asyncDecrement'
            ])
        }
    }

    2.使用uni.navigateBack参数传递

    在页面跳转的时候,我们可以使用uni.navigateBack方法中的参数object去传递数据,这个参数是一个Object类型的对象,可以在下一个页面onLoad的时候获取到。

    在发送页面:

    uni.navigateBack({
        delta:1,
        success(res){
            console.log('回跳成功')
        },
        fail(res){
            console.log('回跳失败')
        },
        complete(res){
            console.log('回跳完成')
        },
        animation:true,//使用动画返回
        aniationDuration:2000,//动画持续时间
        aniationType:'pop-out',//动画类型
        title:'返回页面',//导航栏标题
        formData:{//携带的参数
            id:1,
            name:'张三'
        }
    })

    在接收页面:

    onLoad:function(options){
        console.log(options)
        if(options.formData){
            this.formData = options.formData
        }
    }

    3.使用自定义事件进行传递

    在Uniapp中,我们可以使用$emit触发自定义事件,并且可以在组件中使用$on监听这些事件。在父组件中通过$emit触发事件,父组件中调用子组件时会把子组件对象通过$emit的方式传递,然后在子组件中监听并接收这个对象。

    在发送组件:

    methods:{
        sendEvent(){
            this.$emit('event',this.formData) //传递this.formData给监听方
        }
    }

    在接收组件:

    mounted(){
        this.$on('event',data=>{
            console.log(data) //接收数据并进行操作
        })
    }

    总结:

    以上即是Uniapp中常用的传递方法,对于开发者来说,在开发中需要灵活的选择不同的传递方法,针对不同的情况选择最容易实现和最合适的方案。值得一提的是,Vuex作为Uniapp的核心功能之一,在多个组件之间传递数据时,使用它是最为推荐的做法,可以避免代码过于复杂而导致的性能损失。

    以上就是聊聊uniapp的传递方法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:
    上一篇:uniapp调用子组件方法失败怎么办 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • uniapp怎么用终端创建• uniapp蓝牙发送不过去怎么回事• uniapp调用子组件方法失败怎么办• uniapp怎么点击跳转到主页• uniapp怎么在main.js导入js
    1/1

    PHP中文网