![](/img/trans.png)
[英]How to access a function in a child class component from a stateless parent?
[英]How to send data from stateless child component to stateless parent component in react?
我是新來的。 我有一個帶有幾個類組件和無類組件的React App。 我有以下兩個組件,需要從子組件向父組件發送數據(在這種情況下為“ projectID”)。 我的子組件是無類組件。 我知道我可以在類組件中執行以下操作
sendId(id) {
this.setState({ projectID:id }, () =>
this.props.onClick(this.state.projectID)
)
}
但是我有一個無類的子組件
子組件:
const sendId = (id) => {
// How to setup "send id to parent" here?
}
const project = ({ task }) => (
<div onClick={() => sendId(task.projectID)} >
{task.projectID}
</div>
)
export default project
父組件:
import project from './project'
class ProjectList extends React.Component {
render() {
return (
<div>
{() => (
<project
// How to setup "get id from child" here?
/>
)}
</div>
));
}
}
我怎樣才能做到這一點?
如果我理解您的問題,可以通過將回調道具傳遞給ProjectList
渲染方法中的<project>
來從ProjectList
組件訪問傳遞給sendId()
的id
, sendId()
:
class ProjectList extends React.Component {
render() {
return (
<div>
{/* pass onSendId callback prop, and console log when it's invoked */}
<project onSendId={ (theId) => { console.log(`sent id: ${theId}`); } } />
</div>
));
}
}
然后,此更改將要求您更新project
組件,以便在調用onClick
處理程序時調用回調prop:
const project = ({ task, onSendId }) => (
{/* Pass the onSendId callback into project, and call this from onClick */}
<div onClick={() => onSendId(task.projectID)} >
{task.projectID}
</div>
)
希望有幫助!
您可以將在父組件中定義的回調傳遞給孩子
組件道具。
子組件:
const project = ({ task, sendId }) => (
<div onClick={() => sendId(task.projectID)} >
{task.projectID}
</div>
)
export default project
父組件:
import project from './project'
class ProjectList extends React.Component {
sendIdHandler = (projectId) => {
//put your logic here
}
render() {
return (
<div>
<project sendId={this.sendIdHandler} />
</div>
));
}
}
只需將父級的方法提供給子組件,然后使用props.xxx()
。
您要做的就是將一個函數傳遞給接受ID的子組件。
父組件
class ProjectList extends React.Component {
getChildData = (id) => {/* do something */ }
render() {
return (
<div><Project getDataFn={this.getChildData}</div>
));
}
}
子組件
const project = ({ task }) => (
<div onClick={this.props.getDataFn(task.projectID)} >
{task.projectID}
</div>
)
快樂的反應:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.