React native 在父组件中使用对setState()的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)

我是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);
    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选项提供信息。