0

在此处输入图像描述按下按钮以获取 svg 的 base64 字符串 ... 会产生以下错误: - 只有创建视图层次结构的原始线程才能触摸其视图

render() {
    return (
      <ScrollView contentContainerStyle={styles.container}>
        <Svg
          ref={c => (this.svg = c)}
          height="50%"
          width="50%"
          viewBox="0 0 100 100"
        >
          <Circle
            cx="50"
            cy="50"
            r="45"
            stroke="blue"
            strokeWidth="2.5"
            fill="green"
          />
        </Svg>

        <TouchableOpacity
          onPress={() => {
            this.svg.toDataURL(data => {
              console.log("data", data);
            });
          }}
        >
          <Text>Get Data</Text>
        </TouchableOpacity>
      </ScrollView>
    );
  }

有什么帮助吗?

4

2 回答 2

0

我终于想通了...

这是 npm (v 6.4.1) 问题,因为当我删除 node-modules 文件夹和 package-lock.json 并尝试使用 yarn 重新安装它时,它就像以前一样工作。

我安装了一个新版本的 react-native-svg,它对我不起作用,当我尝试使用 npm 降级到旧版本时,由于某种原因它无法识别它,并且 package-lock.json 继续使用新版本我卸载了!

于 2019-03-18T14:08:03.583 回答
0

就我而言,我通过在主线程上运行我的块来解决它:

runOnUiThread(new Runnable() {
    @Override
    public void run() {
        // My block, doing stuff on the view
    }
});
于 2019-12-20T19:43:23.770 回答