uniapp-子组件改变父组件的值

本文介绍了两种在uni-app中实现子组件改变父组件值的方法:一是通过事件传递,二是使用.vue的.sync修饰符实现双向绑定。示例代码展示了如何在子组件触发时更新父组件的number变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法1:事件传递

父组件代码

<template>
	<view>
		<view class="old-word">{
  {number}}</view>
		<!--步骤二:将函数以自定义事件的形式传递给子组件-->
		<test-box @sonMethod="addnumber()"></test-box>
	</view>
</template>

<script>
	/*引入子组件*/
	import testBox from "@/pages/property/components/test-bot.vue"
	export default {
		/*注册子组件*/
		components: {
			testBox
		},
		data() {
			return {
				number: -1
			}
		},
		onLoad() {

		},
		methods: {
			/*步骤一:在父组件中定义一个函数用于改变number的值*/
			addnumber() {
				console.log("已触发")
				this.number = this.number + 1
			}
		}
	}
</script>

<style lang="scss" scoped>
	.old-word {
		width: 100%;
		padding-top: 100rpx;
		text-align: center;
		font-size: 32rpx;
		color: #666666;
		font-weight: 700;
	}
</style>

子组件代码


                
UniApp中,当子组件需要修改父组件的状态并且希望子组件自身也随着这个变化更新时,可以使用事件总线(Event Bus)或者Vuex(状态管理库)。这里以事件总线为例: 1. **事件总线(Event Bus)**:子组件通过`emit`触发一个自定义的事件,传递想要改变父组件监听这个事件,在处理完业务逻辑后调用`dispatch`或`broadcast`来通知所有子组件(如果是全局广播),然后更新其状态。子组件通过`on`监听父组件的状态变化。 ```javascript // 父组件 Page({ data: { value: '初始' }, methods: { updateValue(newVal) { this.value = newVal; // 触发事件 uni.EventCenter.emit('updateValue', this.value); } } }) // 子组件 Component({ props: ['value'], methods: { handleParentChange() { // 当父组件状态变化,处理业务逻辑后 uni.EventCenter.on('updateValue', newVal => { this.setData({ value: newVal }); }); } } }) ``` 2. **Vuex**:如果应用的状态较多,推荐使用Vuex。子组件通过`actions`触发一个异步操作来更新状态,然后通过`mapActions`在组件内部调用这个动作。父组件不需要直接操作子组件,而是通过改变store里的状态间接影响子组件。 ```javascript // store.js export default new Vuex.Store({ state: { value: '初始' }, mutations: { setValue(state, newVal) { state.value = newVal; } }, actions: { updateValue(context, newVal) { context.commit('setValue', newVal); } } }) // 子组件 Component({ computed: { parentValue() { return this.$store.state.value; } }, methods: { async onParentChange() { await this.$store.dispatch('updateValue', '新的'); } } }) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值