Javascript 使用param将'Const'ReactJs组件转换为基于类
我一直在改进代码,学习如何使用基于类的组件。对于没有参数的函数,我取得了部分成功。但其余的都没有转化 工作内容: 这个 到 尚未完成的工作: 下面的部件是我卡住的地方。我真的不明白这个参数是如何传递给基于类的方法的。参数在类的构造函数中是否可以作为prop或其他东西使用Javascript 使用param将'Const'ReactJs组件转换为基于类,javascript,reactjs,class,components,Javascript,Reactjs,Class,Components,我一直在改进代码,学习如何使用基于类的组件。对于没有参数的函数,我取得了部分成功。但其余的都没有转化 工作内容: 这个 到 尚未完成的工作: 下面的部件是我卡住的地方。我真的不明白这个参数是如何传递给基于类的方法的。参数在类的构造函数中是否可以作为prop或其他东西使用 const Topic = ({match}) => ( <div> <h3>{match.params.topicId}</h3> </div> ) 下
const Topic = ({match}) => (
<div>
<h3>{match.params.topicId}</h3>
</div>
)
下面还有一个
const Topics = ({match}) => (
<div>
<h2>Topics</h2>
<ul>
<li>
<Link to={`${match.url}/rendering`}>
Rendering with React
</Link>
</li>
<li>
<Link to={`${match.url}/components`}>
Components
</Link>
</li>
<li>
<Link to={`${match.url}/props-v-state`}>
Props v. State
</Link>
</li>
</ul>
<Route path={`${match.url}/:topicId`} component={Topic}/>
<Route exact path={match.url} render={() => (
<h3>Please select a topic.</h3>
)}/>
</div>
)
要将函数组件转换为类组件,请执行以下操作: 将所有内容从函数组件的主体移动到类组件的渲染方法。如果主体是JSX本身,只需从render方法返回它。 通过分解this.props,将需要的props分配给常量。 注意:对于没有状态或不需要生命周期方法的只查看组件,您应该保留无状态组件 之前的主题: 转换后的主题:
要将函数组件转换为类组件,请执行以下操作: 将所有内容从函数组件的主体移动到类组件的渲染方法。如果主体是JSX本身,只需从render方法返回它。 通过分解this.props,将需要的props分配给常量。 注意:对于没有状态或不需要生命周期方法的只查看组件,您应该保留无状态组件 之前的主题: 转换后的主题:
为了扩展Ori Drori的解决方案,这是完全正确的,我想给你们一些组件组成的更多上下文,以了解道具来自何处,这些还没有得到回答 假设您有一个主题组件和一个主题组件列表。组件能够呈现其他组件,因此主题可以呈现许多主题组件 考虑到这一点,假设我们的出发点是主题:
class Topics extends React.Component {
// In a typical single page application you will receive topics from outside, for example from a REST API.
const topics = [{
name: "Topic1",
id: 1
}, {
name: "Topic2",
id: 2
}];
render() {
return (
<div>
{
topics.map(topic => <Topic
name={topic.name}
topicId={topic.id}
/>)
}
</div>
);
}
}
这个话题看起来和Ori Drori的答案完全一样
当您的应用程序增长了如此多的依赖项和属性冒泡时,似乎是一种很好的组合组件的方法可能会变得非常困难,特别是因为您需要在多个组件层之间进行大量数据转换。这就是Redux或React Baobab的用武之地,它提供了一种将数据转换以及状态转换从组件中移除到集中模块(状态)的方法。为了扩展Ori Drori完全正确的解决方案,我想给您一些组件组合的更多上下文,以了解道具的来源尚未得到回答 假设您有一个主题组件和一个主题组件列表。组件能够呈现其他组件,因此主题可以呈现许多主题组件 考虑到这一点,假设我们的出发点是主题:
class Topics extends React.Component {
// In a typical single page application you will receive topics from outside, for example from a REST API.
const topics = [{
name: "Topic1",
id: 1
}, {
name: "Topic2",
id: 2
}];
render() {
return (
<div>
{
topics.map(topic => <Topic
name={topic.name}
topicId={topic.id}
/>)
}
</div>
);
}
}
这个话题看起来和Ori Drori的答案完全一样
当您的应用程序增长了如此多的依赖项和属性冒泡时,似乎是一种很好的组合组件的方法可能会变得非常困难,特别是因为您需要在多个组件层之间进行大量数据转换。这就是Redux或React Baobab的用武之地,它提供了一种将数据转换以及状态转换从组件中移除到集中模块(状态)的方法。感谢您的解释@谢谢你的解释@托拜厄斯
const Topic = ({match}) => (
<div>
<h3>{match.params.topicId}</h3>
</div>
)
class Topic extends React.Component {
render() {
const { match } = this.props;
return (
<div>
<h3>{match.params.topicId}</h3>
</div>
);
}
}
class Topics extends React.Component {
// In a typical single page application you will receive topics from outside, for example from a REST API.
const topics = [{
name: "Topic1",
id: 1
}, {
name: "Topic2",
id: 2
}];
render() {
return (
<div>
{
topics.map(topic => <Topic
name={topic.name}
topicId={topic.id}
/>)
}
</div>
);
}
}