按下按钮以获取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>
);
}
有帮助吗?
答案 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
}
});