React native 在父组件中使用对setState()的onViewTransformed回调会导致无限循环
我是React Native的新手,所以不确定这是一个bug还是我的误解,但当我这样调用onViewTransformed回调时,我遇到了一个问题React native 在父组件中使用对setState()的onViewTransformed回调会导致无限循环,react-native,React Native,我是React Native的新手,所以不确定这是一个bug还是我的误解,但当我这样调用onViewTransformed回调时,我遇到了一个问题 import Image from ‘react-native-transformable-image’; class Parent extends Component { constructor(props) { super(props); this.transform = this.transform.bind(this)
import Image from ‘react-native-transformable-image’;
class Parent extends Component {
constructor(props) {
super(props);
this.transform = this.transform.bind(this);
this.state = {
scale: 1,
translateX: 0,
translateY: 0
};
}
handleTransform(data) {
this.setState({
scale: data.scale,
translateX: data.translateX,
translateY: data.translateY
});
}
render() {
return (
<Image
...
onViewTransformed={this.transform}
/>
);
}
从“react native transformable Image”导入图像;
类父级扩展组件{
建造师(道具){
超级(道具);
this.transform=this.transform.bind(this);
此.state={
比例:1,
translateX:0,
翻译:0
};
}
手传输(数据){
这是我的国家({
比例:data.scale,
translateX:data.translateX,
translateY:data.translateY
});
}
render(){
返回(
);
}
}
它进入一个无限循环。
React Native错误表指出这可能是由于componentDidUpdate或componentWillUpdate方法造成的
那么我错过了什么呢
提前感谢。请查看您对
组件的定义以及您在ViewTransformed上的使用位置
我的猜测是,一旦在父级中运行handleTransform
的
调用了onviewstransformed
。这随后会重新启动
,再次触发onViewTransformed
,重复我们有一个无限循环
通常,在渲染函数中设置状态会导致这种情况。解决这一问题的两种方法是
1-删除任何组件的render
或diddupdate
中的任何setStates
。找到在这些生命周期之外实现相同期望行为的方法
2-仔细考虑执行顺序,小心不要触发无限循环。(不过,在应用程序上工作的时间越长,就越容易出现bug)
不过,这都是猜测工作,如果您可以共享更多代码,我将非常乐意提供帮助:)该组件是包的一个组件,onViewTransformed道具继承自。顺便问一下,是否允许在componentWillUpdate生命周期中设置状态?非常感谢。最好不要在componentWillUpdate中使用setState,请在此处查找更多有关原因的信息:是否需要运行
HandletTransform
来存储状态,是否使用此状态进行任何操作?从react native view transformer的文档中可以看出,它可以自己正常工作,而无需父级复制转换?我认为,我实际上不需要将其存储在状态中。我只想使用回调的数据为ImageEditor的cropImage()方法的cropData选项提供信息。