ComponentWillMount 警告

IT技术 reactjs react-native react-native-router-flux
2021-05-05 16:20:32

我正在创建一个内部布局。我是从另一个场景来到这个场景的。所以在开始时呈现另一个布局。在我进入第二个场景(带有 TextInput 标签)后,我收到如下警告:

componentWillMount 已弃用,将在下一个主要版本中删除。请改用 componentDidMount。作为临时解决方法,您可以重命名为 UNSAFE_componentWillMount。请更新以下组件:App、Container、Image、Text< TouchableOpacity、Transitioner、View。

这很奇怪,因为我没有使用 componentWillMount 方法,所以我猜它是隐式调用的。

这是组件的代码

 class MainTopBarAfterSearch extends Component {
constructor() {
    super();
    this.state = { text: " " };
}

render() {
    const { topBarContainer, imageStyle, textInputStyle } = styles;
    return (
        <View style={topBarContainer}>
            <TouchableOpacity onPress={() => Actions.menu()}>
                <Image
                    source={require("../../../resources/menuWhite.png")}
                />
            </TouchableOpacity>
            <TextInput
                style={textInputStyle}
                placeholder="Begin to search"
                value={this.state.text}
                onChangeText={text => this.setState({ text })}
            />
            <Image source={require("../../../resources/filter.png")} />
        </View>
    );
}
}
4个回答

是的,因为componentWillMountcomponentWillReceiveProps在 React 中很快就会被弃用。我建议你使用componentDidMount而不是componentWillMount.

但是您仍然会收到那些黄色框警告,因为react-native仍在将它们用于内部组件,例如ImageTouchableOpacity以及许多其他组件。我们需要等待新的更新来消除这些警告。别担心,快乐编码。

我认为, refcomponentWillMount是在Component类实现中。不在扩展中。

这是因为componentWillMount将在下一个主要版本中很快被弃用。即使您不使用它,收到此警告也是为了防止您使用它,因为它是我们常用的生命周期的一部分。

ComponentWillMount 在版本 16 中已弃用。您应该将所有代码从 componentWillMount 移动到构造函数或 componentDidMount。

请参阅以下链接以获取更多说明。 https://reactjs.org/docs/react-component.html#componentwillmount