vidsAsHtml映射函数中的this关键字不断返回未定义。
我读了这个,还有其他一些关于这个的问题,但是他们的解决方案没有解决问题。我已经在地图上使用了es6语法箭头功能,但是我也尝试将其作为第二个参数,但这并不能解决问题。好奇是否有人知道为什么’this’关键字一直在这里未定义。
import React, { useState, useEffect } from 'react'
import axios from 'axios'
const VideoGrid = (props) => {
const [videos, setResource] = useState([])
const fetchVideos = async (amount, category) => {
const response = await axios.get('https://pixabay.com/api/videos/', {
params: {
key: '123456679',
per_page: amount,
category: category
}
})
console.log(response)
const vidsAsHtml = response.data.hits.map(vid => {
return (
<div className={`${props.page}--grid-content-wrapper`} key={vid.picture_id}>
<div className={`${props.page}--grid-video`}>
<video
poster="https://i.imgur.com/Us5ckqm.jpg"
onMouseOver={this.play()}
onMouseOut={this.pause()}
src={`${vid.videos.tiny.url}#t=1`} >
</video>
</div>
<div className={`${props.page}--grid-avatar-placeholder`}></div>
<div className={`${props.page}--grid-title`}>{vid.tags}</div>
<div className={`${props.page}--grid-author`}>{vid.user}</div>
<div className={`${props.page}--grid-views`}>{vid.views}
<span className={`${props.page}--grid-date`}> • 6 days ago</span>
</div>
</div>
)
})
setResource(vidsAsHtml)
}
useEffect(() => {
fetchVideos(50, 'people')
}, [])
return (
<main className={`${props.page}--grid-background`}>
<nav className={`${props.page}--grid-nav`}>
<button
id='followButton'
className={`${props.page}--grid-nav-${props.titleOne}`}
>{props.titleOne}
</button>
<button
id='recommendedButton'
className={`${props.page}--grid-nav-${props.titleTwo}`}
>{props.titleTwo}
</button>
<button
id='subscriptionsButton'
className={`${props.page}--grid-nav-${props.titleThree}`}
>{props.titleThree}
</button>
<button className={`${props.page}--grid-nav-${props.titleFour}`}>{props.titleFour}</button>
<button className={`${props.page}--grid-nav-${props.titleFive}`}>{props.titleFive}</button>
<button className={`${props.page}--grid-nav-follow`}>FOLLOW</button>
</nav>
<hr className={`${props.page}--grid-hr-nav-grey`} />
<hr className={`${props.page}--grid-hr-nav-black`} />
<div className={`${props.page}--grid`} style={{marginTop: 'unset'}}>
{videos}
</div>
</main>
)
}
export default VideoGrid
事件处理程序道具应传递给函数。当前,您正在尝试传递this.play()
和this.pause()
作为事件处理程序的返回值,但无论如何都无法正常工作。
而且React也不会通过将该元素提供给事件处理程序this
,但是您可以通过event.target
以下方式访问它:
<video
poster="https://i.imgur.com/Us5ckqm.jpg"
onMouseOver={event => event.target.play()}
onMouseOut={event => event.target.pause()}
src={`${vid.videos.tiny.url}#t=1`} >
</video>
问题内容: 我想在切换时更新状态,但在处理程序中未定义对象。根据教程文档,我应该引用该组件。我想念什么吗? 问题答案: ES6 React.Component不会自动将方法绑定到自身。您需要将它们自己绑定到构造函数中。像这样:
涵义 this关键字是一个非常重要的语法点。毫不夸张地说,不理解它的含义,大部分开发任务都无法完成。 前一章已经提到,this可以用在构造函数之中,表示实例对象。除此之外,this还可以用在别的场合。但不管是什么场合,this都有一个共同点:它总是返回一个对象。 简单说,this就是属性或方法“当前”所在的对象。 this.property 上面代码中,this就代表property属性当前所在
在 C# 中,可以使用 this 关键字来表示当前对象,日常开发中我们可以使用 this 关键字来访问类中的成员属性以及函数。不仅如此 this 关键字还有一些其它的用法,下面就通过一些示例来分别演示一下。 1) 使用 this 表示当前类的对象 运行结果如下: 小牛知识库 https://www.xnip.cn/ 2) 使用 this 关键字串联构造函数 运行结果如下: 无参构造函数 小牛知识库
主要内容:this.属性名,this.方法名,this( )访问构造方法this 关键字是 Java 常用的关键字,可用于任何实例方法内指向当前对象,也可指向对其调用当前方法的对象,或者在需要当前类型对象引用时使用。 下面我们根据示例分别讲解 this 关键字的作用。 this.属性名 大部分时候,普通方法访问其他方法、成员变量时无须使用 this 前缀,但如果方法里有个局部变量和成员变量同名,但程序又需要在该方法里访问这个被覆盖的成员变量,则必须使用 this 前缀
问题内容: 当ai遇到关键字时,我正在研究Java中的方法重写。在Internet和其他来源上进行了大量搜索之后,我得出结论,当实例变量的名称与构造函数的参数相同时,将使用关键字。我是对还是错? 问题答案: 是实例中当前实例的别名或名称。它对于消除实例变量与局部变量(包括参数)的区别很有用,但它本身可以用来简单地引用成员变量和方法,调用其他构造函数重载或简单地引用 实例 。适用用途的一些示例(并非
问题内容: 我试图了解java关键字的this实际作用。我一直在阅读Sun的文档,但对于this实际操作仍然不甚了解。 java 关键字 问题答案: 关键字是对当前对象的引用。 另一种思考方式是关键字就像你用来引用自己的人称代词。对于相同的概念,其他语言使用不同的词。VB使用Me和Python约定(因为Python不使用关键字,只是每个方法的隐式参数)将被使用。 如果要引用本质上属于你的对象,你将