CircleProgress组件在iphone13&iOS16.1.1渐变色显示异常

小程序开发相关产品技术讨论,包括面板、智能小程序、React Native、Ray跨端框架、Panel SDK、微信小程序、小程序开发工具(IDE)及其他开发技术相关等话题


crisiron
Posts: 118

wink_li 2025年 Mar 13日 18:38
crisiron 2025年 Mar 13日 16:05
wink_li 2025年 Mar 13日 15:56

以下是问题复现的例子,onTouchEnd中打印设备属性temp_c,永远都是视图最初加载时的属性值:

Code: Select all

import RayCircleProgress from '@ray-js/circle-progress';
import React, { useState } from 'react';
import {View} from '@ray-js/ray';
import { useActions, useProps } from "@ray-js/panel-sdk";
import styles from './test.module.less';

export function TestCircleProgress() {
    const actions = useActions();
    const temp_c = useProps(state => state)['temp_set']
    const [localTemp, setLocalTemp] = useState(0);

function progressToTemp(progress: number): number {
    return Math.floor(
        35 + (progress) * 30 / (100)
    )
}

return (
    <View className={styles.view}>
        <RayCircleProgress
            className={styles.circle}
            value={localTemp}
            ringRadius={135}
            innerRingRadius={111}
            startDegree={135}
            offsetDegree={270}
            onTouchMove={(value) => {
                setLocalTemp(value)
            }}
            onTouchEnd={(value) => {
                setLocalTemp(value)
                console.log('temp: ', temp_c)
                const temp = Math.floor(progressToTemp(value))
                actions['temp_set'].set(temp)
            }}
        />
    </View>
)
}

RayCircleProgress 是 来修改 localTemp 的值,跟你的dp下发实际上是隔离的,localTemp 的值跟手势的位置对应上,RayCircleProgress 就是正常的。
temp_c 值未改变可以通过 dp日志确认下你的 dp 是否发送成功

dp发送成功了,可看到日志,我的意思是,当我的视图使用了RayCircleProgress组件,就无法获取最新的值,例如useProps(state => state)['temp_set'],你可以试一下,我不清楚这是什么问题

看到的日志是上报的还是下发的?


Tags:
wink_li
Posts: 20

Re: CircleProgress组件在iphone13&iOS16.1.1渐变色显示异常

crisiron 2025年 Mar 17日 09:38
wink_li 2025年 Mar 13日 18:38
crisiron 2025年 Mar 13日 16:05

RayCircleProgress 是 来修改 localTemp 的值,跟你的dp下发实际上是隔离的,localTemp 的值跟手势的位置对应上,RayCircleProgress 就是正常的。
temp_c 值未改变可以通过 dp日志确认下你的 dp 是否发送成功

dp发送成功了,可看到日志,我的意思是,当我的视图使用了RayCircleProgress组件,就无法获取最新的值,例如useProps(state => state)['temp_set'],你可以试一下,我不清楚这是什么问题

看到的日志是上报的还是下发的?

点击圆环,会设置温度,日志可以看到设置成功了,但我打印temp_c属性值,一直都是49

Attachments
circle问题.jpg
crisiron
Posts: 118

Re: CircleProgress组件在iphone13&iOS16.1.1渐变色显示异常

wink_li 2025年 Mar 17日 09:51
crisiron 2025年 Mar 17日 09:38
wink_li 2025年 Mar 13日 18:38

dp发送成功了,可看到日志,我的意思是,当我的视图使用了RayCircleProgress组件,就无法获取最新的值,例如useProps(state => state)['temp_set'],你可以试一下,我不清楚这是什么问题

看到的日志是上报的还是下发的?

点击圆环,会设置温度,日志可以看到设置成功了,但我打印temp_c属性值,一直都是49

未复现问题,请使用最如下代码进行测试是否正常

1.png

Code: Select all

import RayCircleProgress from '@ray-js/circle-progress';
import React, { useState } from 'react';
import { View } from '@ray-js/ray';
import { useActions, useProps } from '@ray-js/panel-sdk';

function TestCircleProgress() {
  const actions = useActions();
  const temp_c = useProps(state => state)['temp_value'];
  console.warn(temp_c, 'temp_ctemp_c');

  return (
    <View>
      <RayCircleProgress
        value={temp_c}
        ringRadius={135}
        innerRingRadius={111}
        startDegree={135}
        offsetDegree={270}
        onTouchMove={value => {}}
        onTouchEnd={value => {
          // console.log('value: ', value);
          actions['temp_value'].set(value);
        }}
      />
    </View>
  );
}

export default TestCircleProgress;

wink_li
Posts: 20

Re: CircleProgress组件在iphone13&iOS16.1.1渐变色显示异常

crisiron 2025年 Mar 17日 10:08
wink_li 2025年 Mar 17日 09:51
crisiron 2025年 Mar 17日 09:38

看到的日志是上报的还是下发的?

点击圆环,会设置温度,日志可以看到设置成功了,但我打印temp_c属性值,一直都是49

未复现问题,请使用最如下代码进行测试是否正常
1.png

Code: Select all

import RayCircleProgress from '@ray-js/circle-progress';
import React, { useState } from 'react';
import { View } from '@ray-js/ray';
import { useActions, useProps } from '@ray-js/panel-sdk';

function TestCircleProgress() {
  const actions = useActions();
  const temp_c = useProps(state => state)['temp_value'];
  console.warn(temp_c, 'temp_ctemp_c');

  return (
    <View>
      <RayCircleProgress
        value={temp_c}
        ringRadius={135}
        innerRingRadius={111}
        startDegree={135}
        offsetDegree={270}
        onTouchMove={value => {}}
        onTouchEnd={value => {
          // console.log('value: ', value);
          actions['temp_value'].set(value);
        }}
      />
    </View>
  );
}

export default TestCircleProgress;

好的,是闭包中变量有问题,不好意思

Post Reply