【问题标题】:Returning multiple components results in a libART error返回多个组件会导致 libART 错误
【发布时间】:2017-01-05 13:41:51
【问题描述】:

我正在使用react-native-chart 模块在我的应用程序中显示图表,并且我想为图表上的绘制点添加可触摸的功能,所以我进入库并尝试用@987654326 包装它@组件:https://github.com/tomauty/react-native-chart/blob/master/src/LineChart.js#L168

当我尝试运行我的应用程序时,我从 xcode 收到这些错误:

复制

通过直接从 github 安装 react-native-chart 模块,然后尝试使用 TouchableOpacity https://github.com/tomauty/react-native-chart/blob/master/src/LineChart.js#L168 包装它

    return (
        <View>
            <View style={{ position: 'absolute' }}>
                <Surface width={containerWidth} height={containerHeight}>
                    { multipleLines }
                    { multipleFills }
                </Surface>
            </View>
            <View style={{ position: 'absolute' }}>
                <Surface width={containerWidth} height={containerHeight} />
            </View>
            {(() => {
                if (!this.props.showDataPoint) return null;

                var multipleDataPoints = dataPoints.map( (dataPointSet, index) => {
                    let totalDataSet = dataPointSet.map((d, i) => {
                        return (
                            // <TouchableOpacity>
                              <Circle key={i} {...d} onPress={()=>alert(i)} />
                            // </TouchableOpacity>
                        );
                    });
                    return totalDataSet;
                });

                return (
                    <Surface width={containerWidth} height={containerHeight}>
                        { multipleDataPoints }
                    </Surface>
                );
            })()}
        </View>
    );

附加信息

  • React Native 版本:0.39.2
  • 平台:iOS
  • 操作系统:MacOSX 10.12.2

【问题讨论】:

    标签: javascript ios react-native react-jsx


    【解决方案1】:

    您不能在 TouchableOpacity 中添加 Circle 组件。 ReactArt 期望 Surface 组件子项是本机端的实例 ARTNode。您可以尝试将 pandresponder 属性发送到 Circle 组件。从阅读核心代码来看,似乎应该可以。我还没有自己在 ReactArt 上尝试过。

    【讨论】:

    • 我猜我不能在该代码中使用该 Circle 组件传递任何其他组件?例如,如果我想通过 &lt;Popover&gt;&lt;Circle&gt; 组件传递一个 &lt;Circle&gt; 以便每个绘制的点都有某种标签,我就不能这样做?
    • 我没查。但似乎您可以在 Shapes 组件中添加任何类型的组件作为 children 。只有 Surface 组件似乎有这个限制。 React Native 艺术中也有不同的文本形状。请让我知道什么有效。
    • 我在&lt;Circle&gt; 中添加了一个简单的&lt;Text&gt; 组件并编辑了该文件以便显示它的子文件,虽然没有错误,但文本没有显示,我可能是做一些完全错误的事情,但我只想在 Circle 对象旁边渲染一些东西。
    • 我认为您正在使用 Text 组件,在 ReactNativeArt 中还有另一个 Text 组件,请参阅 github.com/facebook/react-native/blob/master/Libraries/ART/… 可以工作。
    • 谢谢你,我用 ART 版本厌倦了它,运行它没有错误,但不幸的是找不到文本。虽然,我正在使用&lt;Text&gt; 进行测试,但如果我想要渲染其他第 3 方组件怎么办?我想这样做的原因是我有这个库有的一些数据,我不确定我是否可以从我的索引文件中访问,我昨天问过这个问题:stackoverflow.com/questions/41497070/…,有兴趣看到文本也可以工作.
    猜你喜欢
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 2016-09-06
    • 2020-08-29
    • 1970-01-01
    相关资源
    最近更新 更多