为了账号安全,请及时绑定邮箱和手机立即绑定

无法从渲染内部调用渲染外部的函数(在 reactjs 中)

无法从渲染内部调用渲染外部的函数(在 reactjs 中)

慕容森 2022-08-27 15:23:38
我的问题是尝试从渲染函数内部调用selectModal。我认为问题是我需要在构造函数中绑定selectModal函数,但这无济于事。我仍然得到相同的错误:FolderIcon.js:37 Uncaught TypeError: 無法在 singleClick (FolderIcon.js:37) 時讀到未定義的產物業 'selectModal'当我像这样在HTML标签中使用箭头函数时,它可以工作,onClick={ () => this.selectModal('Modal A') },但我尝试仅在双击图像时才打开弹出窗口代码如下:class FolderIcon extends Component{    constructor(props){        super(props);        this.state = {            modal: false,            modalInfo: ""          }        this.selectModal = this.selectModal.bind(this);    }    selectModal = (info) => {        this.setState({            modal: !this.state.modal,            modalInfo: info        })    }    render() {        let clicks = [];        let timeout;        function singleClick(event) {            this.selectModal('Modal A');            alert("single click");        }        function doubleClick(event) {            alert('double clicked')        }        function clickHandler(event) {            event.persist()            event.preventDefault();            clicks.push(new Date().getTime());            window.clearTimeout(timeout);            timeout = window.setTimeout(() => {                if (clicks.length > 1 && clicks[clicks.length - 1] - clicks[clicks.length - 2] < 250) {                    doubleClick(event.target);                } else {                    singleClick(event.target);                }            }, 250);        }        return (            <>            <div>                <img src={foldericon} onClick={clickHandler} alt="" className="folder"/>                <p onClick={ () => this.selectModal('Modal A') }>                     Open Modal A                </p>                <Modal                 displayModal={this.state.modal}                modalInfo={this.state.modalInfo}                closeModal={this.selectModal}/>            </div>            </>        );    }}export default FolderIcon;
查看完整描述

2 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

我建议您将函数从渲染移动到类本身。我看不出有什么理由应该区别对待他们。

这样,singleClick 函数内部应引用定义的类,并应找到预期的函数。this


查看完整回答
反对 回复 2022-08-27
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

值 不是从函数的回调函数内部调用时在函数内部期望的值。thissingleClicksetTimeout


this应该参考你的组件来获取函数,以便能够调用函数FolderIconsingleClickselectModal


将函数更改为使用箭头函数语法,以便函数内部的值是组件singleClickthissingleClickFolderIcon


const singleClick = (event) => {

     this.selectModal('Modal A');

     alert("single click");

}


查看完整回答
反对 回复 2022-08-27
  • 2 回答
  • 0 关注
  • 72 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信