如果我理解正确,组件的React生命周期应该确保componentDidMount之前调用componentWillReceiveProps.当我在组件的初始安装上测试它时,它似乎以这种方式工作.但是当组件之前已经安装并重新安装时,顺序就是另一种方式.这是预期的行为吗?以下代码说明了可能以这种方式引入的潜在错误:
class Example extends React.Component {
componentDidMount() {
this.something = { foo: 'bar' };
}
componentWillReceiveProps(nextProps) {
this.something.foo;
// Throws a TypeError if this code is reached before
// componentDidMount is called.
}
}
Run Code Online (Sandbox Code Playgroud) 使用 React.cloneElement 会导致我似乎无法解决的类型错误。
class Dropdown extends React.Component<{ children?: React.ChildrenArray<React.Element<typeof Item>> }> {
render() {
React.Children.map(this.props.children, child =>
React.cloneElement(child)
);
}
}
Run Code Online (Sandbox Code Playgroud)
以下类型错误:
91: React.cloneElement(child, {
^^^^^ read-only array type. Inexact type is incompatible with exact type
v--------------------------
91: React.cloneElement(child, {
92: onClick: () => this.setState({ open: false }),
93: }),
-^ exact type: object type
Run Code Online (Sandbox Code Playgroud)
据我所知,这是将 React.Children 与 React.cloneElement 结合使用的正确方法。
我想使用 Getstream.io API 在 Twitter 上创建类似于主题标签的功能。用户将使用特定主题标签将消息发布到他们自己的平面提要。然后我希望能够根据某个主题标签过滤所有活动。