OpenHarmony开发者论坛
标题:
router中params无法正常传递class对象
[打印本页]
作者:
Summer
时间:
2023-8-29 18:33
标题:
router中params无法正常传递class对象
[md]【问题描述】
路由router通过params传递对象,另一个页面接收到的对象不正确,我提取了一个简单的示例,请问这是什么原因啊 。
Data.ets定义类
```
class Data {
private data:string = 'initData'
getData() {
return this.data
}
setData(data) {
this.data = data
}
}
export default Data
```
页面1,点击跳转按钮跳转到页面,同时传参字符和Data实例对象
```
import router from '@ohos.router';
import Data from './Data'
@Entry
@Component
struct Page1 {
@State message: string = 'Hello World'
@State data
ata = new Data()
build() {
Row() {
Column() {
Text('page1')
.fontSize(50)
.padding(20)
Button('跳转page2')
.fontSize(30)
.height(70)
.fontWeight(FontWeight.Bold)
.onClick(()=>{
router.pushUrl({
url: 'pages/Page2',
params: {
myData: this.data,
message: this.message
}
})
})
}
.width('100%')
}
.height('100%')
}
}
```
page2,点击按钮,打印传递的参数
```
import router from '@ohos.router';
import Data from './Data'
@Entry
@Component
struct Page2 {
@State message: string = router.getParams()['message']
@State data
ata = router.getParams()['data']
@State datas:string = ''
build() {
Row() {
Column() {
Text('page2')
.fontSize(50)
.padding(20)
Text("接收到的字符: " +this.message)
.fontSize(30)
.fontWeight(FontWeight.Bold)
Button('查看传递数据')
.fontSize(30)
.height(70)
.fontWeight(FontWeight.Bold)
.onClick(()=>{
this.getData()
})
}
.width('100%')
}
.height('100%')
}
getData(){
let params = router.getParams()
console.info("log:" + params['message'])
let myData = params['myData']
console.info("log:" + JSON.stringify(myData))
console.info("log:" + (myData instanceof Data))
console.info("log:" + myData.data)
console.info("log:" + myData.getData())
}
}
```
通过打印结果,可以看到传递的对象变了
![AgAACLWCBLVEqkr9RjRIDq6EMyKYX3BH.png](data/attachment/forum/202308/29/183334bkuvi6fiitptddiv.png "AgAACLWCBLVEqkr9RjRIDq6EMyKYX3BH.png")
![]()
【运行环境】
硬件:rk3568; ROM: 3.2 Beta5 ; API 9
[/md]
作者:
HmD
时间:
2023-8-29 18:35
这是正常的,通过router传递对象,只能传递对象中的属性,无法传递对象中的方法
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5