Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ReactJS:如何在父组件中创建的子组件中使用EventListener_Reactjs - Fatal编程技术网

ReactJS:如何在父组件中创建的子组件中使用EventListener

ReactJS:如何在父组件中创建的子组件中使用EventListener,reactjs,Reactjs,当我有eventlistener时,我想从map生成一些子事件时,我遇到了这个问题。如何在父级中创建的子组件中使用EventListener 尝试调整窗口大小: 代码正确吗?您可以使用道具传递事件列表器。 以下是来自(查看温度输入的属性的温度变化): //子对象 类TemperatureInput扩展了React.Component{ 建造师(道具){ 超级(道具); this.handleChange=this.handleChange.bind(this); } 手变(e){ 温度变化

当我有eventlistener时,我想从map生成一些子事件时,我遇到了这个问题。如何在父级中创建的子组件中使用EventListener

尝试调整窗口大小:


代码正确吗?

您可以使用道具传递事件列表器。
以下是来自(查看
温度输入的
属性的
温度变化
):

//子对象
类TemperatureInput扩展了React.Component{
建造师(道具){
超级(道具);
this.handleChange=this.handleChange.bind(this);
}
手变(e){
温度变化(如目标值);
}
render(){
恒定温度=此.props.temperature;
const scale=this.props.scale;
返回(
在{scaleNames[scale]}中输入温度:
);
}
}
//母公司
类计算器扩展了React.Component{
建造师(道具){
超级(道具);
this.handleCelsiusChange=this.handleCelsiusChange.bind(this);
this.handleFahrenheitChange=this.handleFahrenheitChange.bind(this);
this.state={temperature:'',scale:'c'};
}
handleCelsiusChange(温度){
这个.setState({scale:'c',temperature});
}
handleFahrenheitChange(温度){
这个.setState({scale:'f',temperature});
}
render(){
const scale=this.state.scale;
恒定温度=此.state.temperature;
恒温器摄氏度=刻度=='f'?温度转换(温度,toCelsius):温度;
恒定华氏温度=标度=='c'?温度转换(温度,华氏温度):温度;
返回(
);
}
}

如果我正确理解了问题,并且您希望根据父元素的大小隐藏某些子元素,一种方法是根据父元素的大小在状态中设置一个标志:

handleResize=e=>{
if(this.state.navHidden==false&&window.outerWidth>500){
this.setState({hidden:true})
}else if(this.state.navHidden==true&&window.outerWidth{
!(n.isBig&&this.state.navHidden)&&
})
)
}
n.isBig
将是您在导航项目上设置的标志,以确定这些项目是否应隐藏在较小的屏幕大小中。但你可能有其他的方法来确定这一点


由于您要做的是显示逻辑,您还应该检查是否可以使用普通CSS和
媒体查询来完成所需的行为

您希望发生什么,您需要更清楚一点。@jamesemanon我想在调整窗口大小时隐藏菜单中的一些元素。若元素的右边界大于窗口的右边界,我想隐藏这个元素是的,当我从子元素更改输入和接收值时,它会起作用。这很容易。调整窗口大小怎么样?若我在子组件中添加EventListener,那个么我们将收到滞后和freezingNo。例如,我在菜单中有15个元素。如果我调整窗口的大小,我会对所有元素进行排序,并将它们的右边界与窗口的右边界进行比较。若元素的边界大于窗口右边界,那个么我隐藏这个元素。它可以工作,但速度非常慢而且非常冷,因为我在每个子组件中都有window.addEventListener