我可以从一个组件导出数据以更新父组件的状态吗?
Can I export data from one component to update a state in a Parent of a Parent?
我想将我在此事件中收集的变量“synonym”发送到另一个组件。该组件没有直接链接到这个组件,它实际上是父组件的父组件。
理想情况下,这个词会更新另一个组件的状态,这样我就可以用这个新词再次 运行 API。
export default function Synonym(props) {
function searchSynonym(event) {
let synonym = event.target.innerHTML;
}
if (props.synonyms.length > 0) {
return (
<div className="Synonym">
{props.synonyms.map((word, index) => {
if (index < 10) {
return (
<button
key={index}
className="synonym-word"
onClick={searchSynonym}
>
{word}
</button>
);
} else return null;
})}
</div>
);
} else return null;
}
完整代码已在 GitHub 上开源。我要发送消息的组件是 Search.js
提前谢谢你,我是 React 的新手!
从child组件向parent组件传递数据的过程如下:
- 在 parent 组件中创建一个回调函数。数据将是
使用此回调函数从 child 组件检索。
- 作为parent组件的prop,将回调函数传递给
child.
- 使用props,child组件调用parent回调函数
和 return 数据到 parent 组件。
你的情况
直接简单的解决方案是在要使用“同义词”的搜索组件中创建一个回调函数,然后将该函数作为 prop 传递给定义组件,然后再将其传递给同义词组件。
点赞!
在搜索组件中创建同义词 useState 并创建 getSynonym 回调函数,并将其作为属性传递给定义组件。
export default function Search() {
const [keyword, setKeyword] = useState("");
const [result, setResult] = useState(null);
const [photos, setPhotos] = useState(null);
const [synonym, setSynonym] = useState(null);
const getSynonym = (value) =>{
setSynonym(value)
}
{....}
return (
<div className="Search">
<form onSubmit={handleSearch}>
<input className="input" type="search" onChange={updateCity} />
</form>
<Definitions data={result} getSynonym={getSynonym}/>
<Pictures data={photos} />
</div>
);
}
在 Definations 组件中再次将回调函数传递给 Synonym 组件。
export default function Definitions(props) {
{...}
return (
{...}
<Synonym synonyms={meaning.definitions[0].synonyms} getSynonym={props.getSynonym} />
{...}
);
}
在Synonym组件中调用回调函数。
export default function Synonym(props) {
function searchSynonym(event) {
let synonym = event.target.innerHTML;
props.getSynonym(synonym)
}
{...}
}
我想将我在此事件中收集的变量“synonym”发送到另一个组件。该组件没有直接链接到这个组件,它实际上是父组件的父组件。
理想情况下,这个词会更新另一个组件的状态,这样我就可以用这个新词再次 运行 API。
export default function Synonym(props) {
function searchSynonym(event) {
let synonym = event.target.innerHTML;
}
if (props.synonyms.length > 0) {
return (
<div className="Synonym">
{props.synonyms.map((word, index) => {
if (index < 10) {
return (
<button
key={index}
className="synonym-word"
onClick={searchSynonym}
>
{word}
</button>
);
} else return null;
})}
</div>
);
} else return null;
}
完整代码已在 GitHub 上开源。我要发送消息的组件是 Search.js
提前谢谢你,我是 React 的新手!
从child组件向parent组件传递数据的过程如下:
- 在 parent 组件中创建一个回调函数。数据将是 使用此回调函数从 child 组件检索。
- 作为parent组件的prop,将回调函数传递给 child.
- 使用props,child组件调用parent回调函数 和 return 数据到 parent 组件。
你的情况 直接简单的解决方案是在要使用“同义词”的搜索组件中创建一个回调函数,然后将该函数作为 prop 传递给定义组件,然后再将其传递给同义词组件。
点赞!
在搜索组件中创建同义词 useState 并创建 getSynonym 回调函数,并将其作为属性传递给定义组件。
export default function Search() {
const [keyword, setKeyword] = useState("");
const [result, setResult] = useState(null);
const [photos, setPhotos] = useState(null);
const [synonym, setSynonym] = useState(null);
const getSynonym = (value) =>{
setSynonym(value)
}
{....}
return (
<div className="Search">
<form onSubmit={handleSearch}>
<input className="input" type="search" onChange={updateCity} />
</form>
<Definitions data={result} getSynonym={getSynonym}/>
<Pictures data={photos} />
</div>
);
}
在 Definations 组件中再次将回调函数传递给 Synonym 组件。
export default function Definitions(props) {
{...}
return (
{...}
<Synonym synonyms={meaning.definitions[0].synonyms} getSynonym={props.getSynonym} />
{...}
);
}
在Synonym组件中调用回调函数。
export default function Synonym(props) {
function searchSynonym(event) {
let synonym = event.target.innerHTML;
props.getSynonym(synonym)
}
{...}
}