react返回数组问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了react返回数组问题相关的知识,希望对你有一定的参考价值。

代码如下:
class OtherStatus extends React.Component
render()
return [
// 不要忘记 key :)
<li key="A">First item</li>,
<li key="B">Second item</li>,
<li key="C">Third item</li>,
];



运行时报错:
invariant.js:42 Uncaught (in promise) Error: OtherStatus.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.

参考技术A VB定义字符串数组与定义其它数组没大的区别,只是其赋值一般需要通过循环来获取来自某个特定来源的字符串集合。不然其数组任一元素其值都为空字符串。
Dim strSj(100) As String,本句声明一个下标为0,上标为100的共有101个元素的字符串数组。
如字符串数组大小不确定,可先声明动态数组。
Dim strSj() As String

再用 ReDim 语句分配实际的元素个数。ReDim 语句只能出现在过程中。
ReDim 语句支持这样的语法,它与固定数组中使用的语法相同。对于每一维数,每个 ReDim
语句都能改变元素数目以及上下界。但是,数组的维数不能改变。
字符串数组赋值可由For Next循环从数据表中获取字符串数据,或者由
Split函数从已知一长串有固定分割字符(如,或空格字符等)获取一维字符串数组。
For...Next 语句,以指定次数来重复执行一组语句。
Split函数。返回一个下标从零开始的一维数组,它包含指定数目的子字符串

React Native HealthKit getDailyStepCountSamples 返回未定义或空数组

【中文标题】React Native HealthKit getDailyStepCountSamples 返回未定义或空数组【英文标题】:React Native HealthKit getDailyStepCountSamples returning undefined or empty array 【发布时间】:2021-01-20 03:58:11 【问题描述】:

我正在使用 react-native-health 创建一个应用来读取每日步数。我已经在模拟器 Health 应用程序上手动添加了步骤,并且数据源正在显示我的应用程序并且所有 Health 权限都已打开,但是当我尝试 getDailyStepCountSamples 时,我得到一个空数组。

另外,我遇​​到的另一个问题是我需要在每次获取空数组之前启动 HealthKit,否则我会得到“未定义”。一旦我再次启动 HealthKit,它将返回“未定义”并记录“步骤:[]”。我的代码有问题吗?

import AppleHealthKit from 'react-native-health';

export function useHealthKit(
    init = false,
    steps = false,
) 
    const PERMS = AppleHealthKit.Constants.Permissions;

    const initiate = () => 
        let permissions = 
            permissions: 
                read: [
                    PERMS.StepCount,
                ],
            ,
        ;
        AppleHealthKit.initHealthKit(permissions, (err, results) => 
            if (err) 
                console.log(err);
             else 
                console.log('Initialized!', results),
            
        );
    ;

    const getSteps = () => 
        let stepOptions = 
            startDate: new Date(2021, 1, 1).toISOString(),
        ;
        AppleHealthKit.getDailyStepCountSamples(
            stepOptions,
            (err, results) => 
                if (err) 
                    return;
                
                console.log('Steps: ', results);
            ,
        );
    ;
    init && initiate();
    steps && getSteps();

我通过以下方式调用它:

const SomeView = () => 
    <View>
      <Button onPress=() => useHealthKit(init: true)>
        <Text>Initiate HealthKit</Text>
      </Button>
      <Button onPress=() => console.log(useHealthKit(steps: true))>
        <Text>Console.log steps</Text>
      </Button>
    </View>
;

【问题讨论】:

【参考方案1】:

我整个下午都在尝试做一些非常相似的事情,结果和你一样。

为我解决的问题是使用github threads 之一的这个奇怪的技巧

基本上,您需要将开始日期更改为比您想要采样提前一个月,所以在您的情况下,这将是 2020 年 1 月 12 日。

原发帖人说这是由 C 代码中的问题引起的。

我还在选项变量中为includeManuallyAdded: trueperiod: 1444 设置变量

为我工作,希望对你有用!

【讨论】:

以上是关于react返回数组问题的主要内容,如果未能解决你的问题,请参考以下文章

返回组件数组的 React 自定义 Hook

如何让 React Hooks 返回一个数组

React 功能组件 - 当组件返回元素数组时,如何将 refs 传递回父级?

尝试访问数组后,React 组件返回无法读取 null 的属性 '__reactInternalInstance$

使用 axios 获取数据后 React useEffect 返回空数组

获取 React 渲染中 map 返回的数组大小