gpt4 book ai didi

javascript - 未捕获的 TypeError : . 包含不是 React Ref 的函数

转载 作者:行者123 更新时间:2023-12-03 13:49:53 25 4
gpt4 key购买 nike

我正在尝试制作一个菜单,当单击它时它就会显示出来。这很好用。但是,我希望只要选择原始菜单或项目列表之外的任何内容,菜单就会关闭。然而,当我这样做时,它会返回错误

Uncaught TypeError: _this.dropdownMenu.includes is not a function
at HTMLDocument.eval (FeedItem.jsx:277)

视觉

enter image description here

代码

import React, { Component } from 'react'
import styled from 'styled-components';

const OptionMenu = styled.div `
position: absolute;
top: 20px;
left: -130px;
display: ${props => props.showMenu ? 'flex' : 'none'};
flex-direction: column;
width: 150px;
background: #FFFFFF;
border: 1px solid #EEEFEF;
box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.2), 0 1px 5px 0 rgba(0,0,0,.12);
z-index: 100;
`;

const OptionItem = styled.div `
color: #414141;
font-size: 18px;
cursor: pointer;
padding: 10px 5px;
transition: .2s;

&:hover {
background-color: #F2F2F2;
}
`;


class FeedItem extends Component {
constructor() {
super();

this.state = {
showMenu: false
}

this.dropdownMenu = React.createRef();
}

showMenu = (e) => {
this.setState({ showMenu: true }, () => {
document.addEventListener('click', this.closeMenu);
});
}

closeMenu = (e) => {
if(!this.dropdownMenu.includes(e.target)) {
console.log('yes')

this.setState({ showMenu: false }, () => {
document.removeEventListener('click', this.closeMenu);
});
}
}

render(props) {
const { showMenu } = this.state;

return(
<Container item={this.props.id}>
<UserOptions onClick={() => this.showMenu()} ref={this.dropdownMenu}>

<OptionMenu showMenu={showMenu}>
<OptionItem>Share</OptionItem>
<OptionItem>Something</OptionItem>
</OptionMenu>
</UserOptions>
</Container>
);
}
}

export default FeedItem;

我正在使用样式组件,这会是一个问题吗?另外,我已经删除了容器的大部分部分,只留下了问题区域。

最佳答案

包含StringArray方法,而不是 Node 方法。

您可以使用contains相反:

closeMenu = (e) => {
if (!this.dropdownMenu.current.contains(e.target)) {
console.log('yes')

this.setState({ showMenu: false }, () => {
document.removeEventListener('click', this.closeMenu);
});
}
}

关于javascript - 未捕获的 TypeError : . 包含不是 React Ref 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53109854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com