【发布时间】:2021-01-22 17:02:25
【问题描述】:
我想将一些数据与一个组件捆绑在一起。下面是一个具有名为 name 的属性的 SFC 示例。我不想将属性name 与名为MyFormTab 的组件一起使用。相反,我想从父组件访问此属性并将其分配给在父组件中显示。
const MyFormTab = (props) => {
const name = props.name
return (
<>
<div className='flex-center-col'>
<input type='email'></input>
<input type='text'></input>
</div>
</>
)
}
然后我想在父组件中渲染这个组件并将 name 属性用于其他目的
const ParentOfMyFormTab = () => {
const [currentTab, setCurrentTab] = useState(1)
const Tab1 = <MyFormTab name='Tab1' />
const Tab2 = <MyFormTab name='Tab2' />
return (
<form>
<div id="tabTitles">
<h2 onClick={setCurrentTab(1)}>Tab1.name</h2>
<h2 onClick={setCurrentTab(2)}>Tab2.name</h2>
</div>
{currentTab === 1 ? <Tab1 /> : <Tab2 />}
</form>
)
}
除了 SFC,我还可以使用我正在考虑的类。
class MyFormTab {
constructor(name){
this.name = name
}
render(){
return (
<>
<div className='flex-center-col'>
<input type='email'></input>
<input type='email'></input>
</div>
</>
)
}
}
然而,我的项目主要使用钩子。我的团队负责人(他不太了解 React)可能会犹豫将类组件与钩子混合。我在other posts 上读到过,在大多数情况下,钩子基本上可以替换类组件。我不知道钩子如何更好,甚至在这种情况下使用。
你认为什么是做我想做的事情的好方法?将带有钩子和类组件的 SFC 放在同一个项目中是个好主意吗?我是不是看错了整个事情?
谢谢
【问题讨论】:
-
这听起来可能是XY problem。您能否详细说明您要使用
name做什么? -
name不是您功能的道具。它只是一个局部变量。 -
@cbr 好的,我添加了更多解释
-
@jmargolisvt 那么你是说这是不可能的吗?同时使用 SFC 和类?
-
当然可以,您可以在定义后将其设置为
MyFormTab的属性:MyFormTab.name = 'foobar'。
标签: javascript reactjs react-hooks