我希望在React状态下具有活动的NavLink“子菜单键”,以告诉NavLink的onClick()方法检查是否有折叠中的NavLinks处于活动状态,如果是这样,请不要切换isOpen来折叠。
此代码使我在控制台中出现import React from 'react';
import { connect } from 'react-redux';
import { NavLink as Link } from 'react-router-dom';
import { Nav, NavItem, NavLink, Collapse } from 'reactstrap';
import { bindActionCreators } from 'redux';
import { actions } from './../../containers/Account/store';
import classnames from 'classnames';
class NavMenuAside extends React.Component {
constructor(props) {
super(props);
this.state = { collapsed: {} };
}
toggle(itemIndex) {
const { collapsed, active } = this.state
// Don't collapse if some NavLinks inside is active
// but allow to toggle() if is collapsed (if we refresh site)
if (active === itemIndex && collapsed[itemIndex]) {
return
}
this.setState({
collapsed: {
...collapsed,
[itemIndex]: !collapsed[itemIndex]
}
});
}
isActive = (itemIndex) => (match) => {
const { active } = this.state
if (match) {
if (active !== itemIndex) {
this.setState({
active: itemIndex
})
}
}
return !!match;
}
render() {
const { t } = this.props;
return (
<Nav className="nav--aside">
<NavItem>
<NavLink tag={Link} to="/admin/qqqq/ffff">{icon('envelope-colored', 'aside-svg')} {t('navMenu.alerts')}</NavLink>
</NavItem>
<NavItem>
<NavLink onClick={() => this.toggle(1)} className={classnames({ 'open': this.state.collapsed[1] })}>{icon('analytics', 'aside-svg')} {t('navMenu.terefere')}</NavLink>
<Collapse isOpen={this.state.collapsed[1]}>
<NavLink tag={Link} isActive={this.isActive(1)} to="/admin/wfwfwfwfwwf">{t('navMenu.terefere2')}</NavLink>
<NavLink tag={Link} isActive={this.isActive(1)} to="/admin/qdqdqd">{t('navMenu.terefere2')}</NavLink>
<NavLink tag={Link} isActive={this.isActive(1)} to="/admin/qqqqq">{t('navMenu.terefere2')}</NavLink>
<NavLink tag={Link} isActive={this.isActive(1)} to="/admin/wfwwfwf">{t('navMenu.terefere2')}</NavLink>
</Collapse>
</NavItem>
</Nav>
);
}
}
错误。
from io import StringIO
from pdfminer.pdfinterp import PDFResourceManager , process_pdf
from pdfminer.converter import TextConverter
from pdfminer.layput import LAParams
def to_txt(pdf_path):
input_ = file(pdf_path , 'rb')
output = StringIO()
manager = PDFResourceManager()
converter = TextConverter(manager, output, laparams = LAParams())
process_pdf(manager, converter, input_)
return output.getvalue()
b = to_txt(rb"C:\Users\Jasvinder Singh\Desktop\HACK-IN REPORT.docx")
ImportError: cannot import name 'process_pdf' from 'pdfminer.pdfinterp' (C:\Users\Jasvinder Singh\Anaconda3\lib\site-packages\pdfminer\pdfinterp.py)
答案 0 :(得分:1)
由于您的isActive
函数,您遇到了该错误。
我对您使用的组件NavLink
知之甚少,但我猜想isActive
道具是bool
,而您正在获取{ {1}}您将进入这段代码
isActive
这将导致更新在渲染函数中的状态。
您需要找到一种方法在渲染之前弄清楚这些值,将if (match) {
if (active !== itemIndex) {
this.setState({
active: itemIndex
})
}
}
逻辑移出该函数,然后在其他地方执行。通常,我将使用setState
来查找状态/道具的更改,然后在其中调用componentDidUpdate
。
如果您对此有任何疑问或需要澄清,请告诉我。
答案 1 :(得分:1)
我不知道您要达到什么目的,但是对我来说,由于isActive
始终为1,因此每次调用itemIndex
时,您都设置了相同的值来声明。
但是如上所述,请删除setState
中的isActive
,错误将会消失