javascript - 如何从 React JS 中的其他兄弟组件传递 props 值
问题描述
我对向第一个兄弟组件发送点击值有疑问,我会将道具值发送给第二个兄弟组件,这可能吗?
我有一个模块,当我单击第一个兄弟姐妹的类别项目时,第二个兄弟姐妹上的产品将根据我单击第一个兄弟姐妹的类别名称而改变。
这是我的父组件:
function BuyerCategoryPage(props) {
return (
<div>
<CategorySlider />
<CategoryProducts/>
</div>
)
}
export default BuyerCategoryPage
第一个兄弟 CategorySlider.js:
const HandleChangeProductCat = (value) => {
console.log(value);
// send the value to the second sibling
}
return (
<div>
<Container fluid>
<Slider style={{paddingTop:20, margin: '0 auto'}} {...settings}>
{
SlideData.map((data) => {
return (
<div key={data.id} >
<div className="sliderDataCategory">
<h6>
<Container>
<Row>
<Col md={3}>
<img className="img-fluid" src={data.cat_image} />
</Col>
<Col >
<label onClick={() => HandleChangeProductCat(data.cat_title)}>{data.cat_title}</label>
</Col>
</Row>
</Container>
</h6>
</div>
</div>
)
})
}
</Slider>
</Container>
</div>
)
第二个兄弟类别Products.js
function CategoryProducts(props) {
}
解决方案
最简单的方法是将状态提升到BuyerCategoryPage
组件中并将“onChange”处理程序传递给CategorySlider
并将状态值传递给CategoryProducts
function BuyerCategoryPage(props) {
const [state, setState] = React.useState(); // common state
return (
<div>
<CategorySlider onChange={setState} /> // pass updater function
<CategoryProducts value={state} /> // pass state value
</div>
);
}
类别滑块
const handleChangeProductCat = (value) => {
console.log(value);
props.onChange(value); // invoke callback and pass new value
}
分类Products
function CategoryProducts({ value }) { // access the passed value
// use the `value` prop as necessary
}
推荐阅读
- events - 事件应该维护历史还是有它的用例?
- swift - 在 Swift 中使用具有约束关联类型的协议作为属性
- jquery - IIS 8.5 和 asmx Webservice - 403 禁止错误
- java - 具有通用值并作为属性的 HashMap
- perl - 使用 CPAN 将 Perl 模块安装到特定目录,当多个模块出现在使用中时
- angular - 在 Angular 6 / ASP.Net Core 中注册、登录、确认电子邮件和密码重置
- sql - 加入显示重复行的 SQL Server
- swift - 我想快速删除最后一个整数值
- android - 带有单选按钮的自定义 ListViewAdapter。
- c++ - 模板和非模板函数之间的 C++ 重载解析