代码之家  ›  专栏  ›  技术社区  ›  Jacob Lockett

在react生命周期方法中使用本地方法

  •  0
  • Jacob Lockett  · 技术社区  · 7 年前

    我很想知道下面的代码是否有效:

    class App extends React.Component {
    	componentDidMount() {
    		logger('mount')
    	}
    	componentDidUpdate() {
    		logger('update')
    	}
    	logger = x => {
    		console.log(x)
    	}
    	render() {
    		return (
    			<div className='container'>
    				
    			</div>
    		)
    	}
    }
    
    ReactDOM.render(<App />, document.getElementById('app'))
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
    <div id="app"></div>

    我已经和react一起工作了一段时间,从来没有遇到过在生命周期方法中使用本地方法的原因,但是出于好奇,我想今天我会尝试一下。我找不到任何明确的解释来解释为什么这可能行不通。这是应用程序初始化的顺序,它只是在调用时看不到它,还是我没有想到的一些基本的东西?

    2 回复  |  直到 7 年前
        1
  •  2
  •   SirFunkButter    7 年前

    我相信这可能和换衣服一样简单 logger('mount') logger('update') 对于 this.logger('mount') this.logger('update') :)

        2
  •  1
  •   Chase DeAnda    7 年前

    你需要用 this. 要访问本地方法:

    class App extends React.Component {
    	componentDidMount() {
    		this.logger('mount')
    	}
    	componentDidUpdate() {
    		this.logger('update')
    	}
    	logger = x => {
    		console.log(x)
    	}
    	render() {
    		return (
    			<div className='container'>
    				
    			</div>
    		)
    	}
    }
    
    ReactDOM.render(<App />, document.getElementById('app'))
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
    <div id="app"></div>