stackoverflower: 我遇到了一个非常奇怪的问题,这是我的示例代码:
export default class MyAwesomeComponent extends React.Component{
constructor(props){
super(props)
this.handleClick = this.handleClick.bind(this)
}
handleClick(){
//do some expression
window.location = 'url I want to jump'
}
render(){
return <button onClick={this.handleClick}/>
}
}
但是当调用handleClick
时,我的水疗中心不会跳转到网址,相反,它什么也没做。用以下代码替换时,问题就解决了:
handleClick(){
setTimeout(()=>{window.location = 'url I want to jump'})
}
我似乎遇到了js单线程问题,setTimeout
或nextTick
可以解决问题
thx
答案 0 :(得分:1)
这本身并不是一个答案,只是为了说明
无论您拥有什么样的服务器环境,您的代码都应该可以正常运行,因为window.location
在客户端运行。
class MyAwesomeComponent extends React.Component {
constructor(props) {
super(props)
this.handleClick = this.handleClick.bind(this)
}
handleClick() {
//do some expression
window.location = 'https://google.com'
}
render() {
return <button onClick={this.handleClick}>click</button>
}
}
ReactDOM.render(<MyAwesomeComponent />, document.getElementById('root'));
&#13;
<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="root"></div>
&#13;