[英]React Passing Data From Child Component to Parent Component via a onClick
[英]Passing data onClick from child component to another child component in React.JS
我正在尝试在另一个子组件中呈现选定的 li (映射在子组件中)。 所以你有以下结构(非常简单):
父组件 (Parent.JS)
我在这里尝试做和理解的练习是如何使用道具在子级之间传递数据(以防值通过父级)。
父.JS
import React, { useState } from 'react'
import Child from './Child'
import Title from './Menu'
function Parent() {
const [word, setWord] = useState('Parent');
return (
<div>
<Title />
<Menu changeWord={word => setWord(word)}/>
</div>
)
}
export default Parent
标题.JS
import React from 'react'
function Title(props) {
return (
<div>
//Here I tell the code to print "Nothing selected"
//until I don't choose a link in the menu.
{props.title ? <h1>{props.title}</h1> : <h1>Nothing selected</h1>}
</div>
)
}
export default Title
菜单.JS
import React from 'react'
const data = [
{title: "Home"},
{title: "About"},
{title: "Contact"},
]
function Menu(props) {
return (
<div>
{data.map((item) => {
return <li onClick={() => props.changeWord(props.children)}>{item.title}</li>
})}
</div>
)
}
export default Menu
当然, App,JS是简化的。
import Parent from './Parent'
function App() {
return (
<div>
<Parent />
</div>
);
}
export default App;
我好近啊。。
当您调用changeWord
时,您希望传递您正在映射的item
,而不是props.children
所以你的Menu
应该是这样的
import React from 'react';
const data = [{ title: 'Home' }, { title: 'About' }, { title: 'Contact' }];
function Menu(props) {
return (
<div>
{data.map((item) => {
return <li onClick={() => props.changeWord(item)}>{item.title}</li>;
})}
</div>
);
}
export default Menu
您的Parent
应该像这样将word.title
state 值传递到Title
中
import React, { useState } from 'react'
import Child from './Child'
import Title from './Menu'
function Parent() {
const [word, setWord] = useState('Parent');
return (
<div>
<Title title={word.title}/>
<Menu changeWord={word => setWord(word)}/>
</div>
)
}
export default Parent
注意:您应该删除'Parent'
的初始 state 值,因为word
现在是 object 并且在尝试访问word.title
时可能会出错。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.