codecamp

$$语法:内置组件双向同步

$$运算符为系统内置组件提供TS变量的引用,使得TS变量和系统内置组件的内部状态保持同步。

内部状态具体指什么取决于组件。例如,Refresh组件的refreshing参数。

使用规则

  • 当前$$支持基础类型变量,以及@State、@Link和@Prop装饰的变量。
  • 当前$$仅支持Refresh组件的refreshing参数。
  • $$绑定的变量变化时,会触发UI的同步刷新。

使用示例

Refresh组件的refreshing参数为例:

当使用了$$符号绑定isRefreshing状态变量时,页面进行下拉操作,isRefreshing会变成true。

同时,Text中的isRefreshing状态也会同步改变为true,如果不使用$$符号绑定,则不会同步改变。

  1. // xxx.ets
  2. @Entry
  3. @Component
  4. struct RefreshExample {
  5. @State isRefreshing: boolean = false
  6. @State counter: number = 0
  7. build() {
  8. Column() {
  9. Text('Pull Down and isRefreshing: ' + this.isRefreshing)
  10. .fontSize(30)
  11. .margin(10)
  12. Refresh({ refreshing: $$this.isRefreshing, offset: 120, friction: 100 }) {
  13. Text('Pull Down and refresh: ' + this.counter)
  14. .fontSize(30)
  15. .margin(10)
  16. }
  17. .onStateChange((refreshStatus: RefreshStatus) => {
  18. console.info('Refresh onStatueChange state is ' + refreshStatus)
  19. })
  20. }
  21. }
  22. }

@Watch装饰器:状态变量更改通知
if/else:条件渲染
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录
HAR

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }