亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法從渲染內部調用渲染外部的函數(在 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 關注
  • 97 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號