我设置了一个on click函数,该函数应该触发位于不同文件中的单独组件中的状态更改。我的splash.js
文件包含组件Splash
,该组件有一个徽标,点击后,它会从登录页面(Splash)更改为我的主页。这是splash.js
:
import React, { Component } from 'react';
import Woods from './woods.jpeg';
import Logo1 from './whitestar.png';
import Logo2 from './orangestar.png';
export default class Splash extends Component {
constructor(props) {
super(props);
this.state = {
imgSrc: Logo1
//this.toggleShowHome = this.toggleShowHome.bind(this);
}
this.handleMouseOver = this.handleMouseOver.bind(this);
this.handleMouseOut = this.handleMouseOut.bind(this);
}
toggleShowHome(property){
this.setState((prevState)=>({[property]:!prevState[property]}));
//this.props.triggerClickOnLogo();
}
handleMouseOver() {
this.setState({
imgSrc: Logo2
});
}
handleMouseOut() {
this.setState({
imgSrc: Logo1
});
}
render() {
return(
<div id='Splashwrapper'>
<img id='logoc' onMouseOver={this.handleMouseOver} onMouseOut={this.handleMouseOut} src={this.state.imgSrc} onClick={this.props.onLogoCLicked}></img>
<img id='backg' src={Woods}></img>
</div>
);
}
}
点击次数功能应该会更改splash
文件中App.js
的状态:
import React, { Component } from 'react';
import Splash from './splash';
import Menu from 'components/Global/Menu';
export default class About extends Component {
constructor(){
super();
this.state = {
splash: true
}
this.logoClicked = this.logoClicked.bind(this);
}
//componentDidMount() {
//setTimeout (() => {
//this.setState({splash: false});
//}, 10000);
//}
logoClicked(props) {
this.setState({splash:false});
}
render() {
if (this.state.splash) {
return <Splash onLogoClicked={this.logoClicked.bind(this)} />
}
const { children } = this.props; // eslint-disable-line
return (
<div className='About'>
<Menu />
{ children }
</div>
);
}
}
但是,我的代码没有做任何事情。如何在Splash
中链接点击功能以更改splash
文件中App.js
的状态,以便显示我的主页?
答案 0 :(得分:0)
您的Splash
组件中似乎有拼写错误。在您img
onClick={this.props.onLogoCLicked}
onLogoClicked
但是当您使用组件时,您将道具传递为propTypes
- 请注意点击的大写字母L。
考虑在你的组件中使用ActivityManager am2 = (ActivityManager) getSystemService(Activity.ACTIVITY_SERVICE);
listelement = am2.getRunningAppProcesses().get(0).processName;
,如果没有必要的道具,React会对它产生一些噪音。