你好,我是一名ReactJS的新手。我正在为一个网站构建侧边栏导航。导航有三个级别,所以我使用以下递归逻辑构建了导航栏:
for all items in the array
if item has childern
buildNavigation()
else return;
}
最初,所有的子元素都是隐藏的,但当菜单项被点击时,我通过遍历DOM来“使其可见”。
enableDropdown(e) {
e.stopPropagation();
let dropdownContent = e.currentTarget.getElementsByClassName(
'dropdown-container'
)[0];
let directionIcon = e.currentTarget.getElementsByClassName(
'menu-direction'
)[0];
// Toggle dropdown & animate caret symbol
if (dropdownContent.style.display === 'block') {
directionIcon.classList.add('direction-icon-reset');
directionIcon.classList.remove('direction-icon-active');
dropdownContent.style.display = 'none';
} else {
directionIcon.classList.add('direction-icon-active');
directionIcon.classList.remove('direction-icon-reset');
dropdownContent.style.display = 'block';
}
}
enableSubMenu(e, link) {
e.stopPropagation();
this.props.history.push(link);
let lis = document.getElementsByClassName('no-child');
for (let i = 0; i < lis.length; i++) {
lis[i].classList.remove('active');
}
e.currentTarget.classList.add('active');
}
但我在代码审查过程中因为直接进行DOM操作受到了巨大的抨击。
那么在ReactJS中进行DOM操作是一种好习惯吗?
我错过了什么?在构建ReactJS应用之前,我应该知道什么?