React native:“只有创建视图层次结构的原始线程才能触摸其视图”

时间:2019-03-15 14:39:05

标签: android react-native react-native-svg

enter image description here按下按钮以获取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>
    );
  }

有帮助吗?

2 个答案:

答案 0 :(得分:0)

我终于想通了...

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

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

答案 1 :(得分:0)

对于我来说,我是通过在主线程上逐字地运行我的代码块来解决的:

runOnUiThread(new Runnable() {
    @Override
    public void run() {
        // My block, doing stuff on the view
    }
});