Reactjs 是否存在将生命周期挂钩作为参数传递给HOC in React的过程?
我正在尝试创建一个包装器,在这里我可以选择要传递的生命周期挂钩。我尝试了以下方法:Reactjs 是否存在将生命周期挂钩作为参数传递给HOC in React的过程?,reactjs,high-order-component,Reactjs,High Order Component,我正在尝试创建一个包装器,在这里我可以选择要传递的生命周期挂钩。我尝试了以下方法: const HOC = lifeCycleHook => WrappedComponent => { return class OriginalComponent extends React.Component { lifeCycleHook render(){ return ( <WrappedComponent {...this.props}
const HOC = lifeCycleHook => WrappedComponent => {
return class OriginalComponent extends React.Component {
lifeCycleHook
render(){
return (
<WrappedComponent {...this.props} />
);
}
}
}
export default HOC;
编辑:不会引发编译错误,但控制台日志不会触发以打印“测试”包可以为您执行此操作。以下是帮助器中的示例:
constpostslist=({posts})=>(
{posts.map(p=>- {p.title}
)}
)
const PostsListWithData=生命周期({
componentDidMount(){
fetchPosts()。然后(posts=>{
this.setState({posts});
})
}
})(PostsList);
你有真实的背景吗?你在哪里需要这个?像一个真实的例子?为了让我能更好地理解,没有什么特别的,只是在玩弄HOC,并注意到我无法实现这个想法。也许你不能这样做,因为没有必要这样做。您只需将一个道具传递给组件,然后在componentDidMount
中调用该道具,我认为您没有抓住要点。componentDidMount只是一个例子。我正在试图找到一种方法,在那里我可以通过一个不同的生命周期挂钩,而不是通过一个道具特定的组件。我认为Oblosys的答案是好的,你应该测试它
import React from 'react';
import HOC from './helpers/hoc';
import componentDidMount from './helpers/componentDidMount';
const Home = () => <h1>Home</h1>;
export default HOC(componentDidMount)(Home);
import React from 'react';
function componentDidMount(){
console.log('Test')
}
export default componentDidMount;
const PostsList = ({ posts }) => (
<ul>{posts.map(p => <li>{p.title}</li>)}</ul>
)
const PostsListWithData = lifecycle({
componentDidMount() {
fetchPosts().then(posts => {
this.setState({ posts });
})
}
})(PostsList);