【发布时间】:2020-03-06 14:40:36
【问题描述】:
我有两个组件并且想要切换一个类。但是,我要切换的类在另一个组件中,它根本不起作用。
filter.js:
import React, { useState } from 'react';
const filterNav = (props) => {
const [gridOne, gridTwo] = useState(false);
const toggleClass = () => gridTwo(!gridOne);
return (
<div>
<a onClick={toggleClass}>
<span className={gridOne ? 'fa fa-icon fa-th-large' : 'fa fa-icon fa-th-list'}></span>
</a>
<div className={gridOne ? 'block' : 'hide'}>Test</div>
</div>
);
}
export default filterNav;
上面的例子完美地工作(我使用测试 div 来显示它在同一个文件中工作)。我遇到的问题是我要用于切换的按钮在filter.js 中,而我要切换的类在layout.js (className={gridOne ? 'col-md-6 d-flex align-items-stretch' : 'col-md-12'}) 中
layout.js:
import React, { useState } from 'react';
function hitItems(props) {
const [gridOne, gridTwo] = useState(false);
const toggleClass = () => gridTwo(!gridOne);
console.log(props)
return (
<div className={gridOne ? 'col-md-6 d-flex align-items-stretch' : 'col-md-12'}>
<div className="card">
<div className="card-body">
{props.topics &&
<div className="tags-inner">
{props.topics.map(topic => (
<div className="card-tag">
<span className="home-link track-click">{topic.name}</span>
</div>
))}
</div>
}
</div>
</div>
</div>
)
}
export default hitItems
是否可以在一个组件中切换按钮 onclick 并让它更改另一个组件?如果这令人困惑,我可以重新提出问题
【问题讨论】:
-
听起来Context API 是您所追求的。
-
如果你在你的 layout.js 组件中使用你的 filter.js 组件是可能的,如果它们不是 child-parent 你需要使用 redux 或 context API
-
如果他们是父子,你只需要在父子中设置你的toggleClassFunction并将通过道具传递给孩子,然后在孩子的onClick上调用它
标签: javascript reactjs