当你进行内联样式时,如何在ReactJS中实现悬停事件或活动事件?
我发现onMouseEnter,onMouseLeave方法是错误的,所以希望有另一种方法来做到这一点.
具体来说,如果您非常快速地将鼠标悬停在组件上,则只会注册onMouseEnter事件.onMouseLeave永远不会触发,因此无法更新状态...使组件看起来好像仍然悬停在上面.如果你尝试模仿":active"css伪类,我也注意到了同样的事情.如果你真的很快点击,只会注册onMouseDown事件.onMouseUp事件将被忽略...使组件显示为活动状态.
这是一个JSFiddle显示问题:https://jsfiddle.net/y9swecyu/5/
JSFiddle的视频问题:https://vid.me/ZJEO
代码:
var Hover = React.createClass({
getInitialState: function() {
return {
hover: false
};
},
onMouseEnterHandler: function() {
this.setState({
hover: true
});
console.log('enter');
},
onMouseLeaveHandler: function() {
this.setState({
hover: false
});
console.log('leave');
},
render: function() {
var inner = normal;
if(this.state.hover) {
inner = hover;
}
return (
<div style={outer}>
<div style={inner}
onMouseEnter={this.onMouseEnterHandler}
onMouseLeave={this.onMouseLeaveHandler} >
{this.props.children}
</div>
</div>
);
}
});
var outer = {
height: '120px',
width: '200px',
margin: '100px',
backgroundColor: …Run Code Online (Sandbox Code Playgroud) 如何检测诸如以下的输入元素当前是否聚焦在ReactJS渲染函数中?
<input type="text" style={searchBoxStyle} placeholder="Search"></input>
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用isomorphic Node.js,Express,Webpack,React app工作.我收到以下错误.有关如何解决它的任何建议?
Warning: React attempted to reuse markup in a container but the checksum was invalid. This generally means that you are using server rendering and the markup generated on the server was not what the client was expecting. React injected new markup to compensate which works but you have lost many of the benefits of server rendering. Instead, figure out why the markup being generated is different on the client or server:
(client) rgin:0;display:flex;-webkit-align-items:
(server) rgin:0;display:flex;align-items:center;j
warning @ …Run Code Online (Sandbox Code Playgroud) 我找不到任何有关如何安装和运行" https://github.com/facebook/react-native/tree/master/Examples "中提供的其他示例的说明,例如" https:// github". com/facebook/react-native/tree/master/Examples/Movies '.
本教程仅告诉您这样做
react-native init AwesomeProject
它抓住了' https://github.com/facebook/react-native/tree/master/Examples/SampleApp '.
如果我克隆整个'react-native'存储库,然后运行
npm install
npm start
Run Code Online (Sandbox Code Playgroud)
从根文件夹(即'/ react-native'),然后在Xcode中打开'/react-native/Examples/Movies/Movies.xcodeproj',并运行该项目,似乎构建正常.模拟器出现,显示应用程序的"电影"介绍屏幕,但随后出现红色死亡屏幕,打印出来:
:0
Run Code Online (Sandbox Code Playgroud)
和终端,'npm start'在根文件夹中运行,打印出来:
Error: EISDIR, read
at Error (native)
[02:35:02] <START> request:/Examples/Movies/MoviesApp.includeRequire.runModule.bundle
Run Code Online (Sandbox Code Playgroud) Ryan Dahl说他发明了NodeJS来解决文件上传进度条问题(https://youtu.be/SAc0vQCC6UQ).使用2009年推出Node时可用的技术,因此在Express和更高级的客户端javascript库自动告诉您进度更新之前,NodeJS究竟是如何解决这个问题的呢?
现在尝试使用Core NodeJS,我理解请求流,我可以查看标题,获取总文件大小,然后获取每个数据块的大小,告诉我完成的百分比.但后来我不明白如何将这些进度更新流回浏览器,因为在request.end()之前浏览器似乎没有更新.
我再次想要了解NodeJS最初如何解决此进度更新问题.WebSockets尚未出现,因此您无法打开与客户端的WebSocket连接,并将进度更新流回浏览器.是否有另一种客户端JavaScript技术被使用?
这是我到目前为止的尝试.进度更新将流式传输到服务器端控制台,但只有在响应流收到response.end()后,浏览器才会更新.
var http = require('http');
var fs = require('fs');
var server = http.createServer(function(request, response){
response.writeHead(200);
if(request.method === 'GET'){
fs.createReadStream('filechooser.html').pipe(response);
}
else if(request.method === 'POST'){
var outputFile = fs.createWriteStream('output');
var total = request.headers['content-length'];
var progress = 0;
request.on('data', function(chunk){
progress += chunk.length;
var perc = parseInt((progress/total)*100);
console.log('percent complete: '+perc+'%\n');
response.write('percent complete: '+perc+'%\n');
});
request.pipe(outputFile);
request.on('end', function(){
response.end('\nArchived File\n\n');
});
}
});
server.listen(8080, function(){
console.log('Server is listening on 8080');
});
Run Code Online (Sandbox Code Playgroud)
FileChooser.html的:
<!DOCTYPE html>
<html>
<body> …Run Code Online (Sandbox Code Playgroud) 我在浏览器中收到以下错误:
未捕获的错误:不变违规:
style支持期望从样式属性到值的映射,而不是字符串.例如,使用JSX时style = {{marginRight:spacing +'em'}}.
这是在运行webpack-dev-server并转到localhost:8080时.
./modules/main.js:
/** @jsx React.DOM */
var React = require('react');
var HoverAction = require('./HoverAction/HoverAction');
var Application = React.createClass({
render: function() {
return (
<div>
<HoverAction title="favorite" />
</div>
);
}
});
if (typeof window !== 'undefined') {
React.render(<Application />, document.getElementById('app'));
}
Run Code Online (Sandbox Code Playgroud)
./modules/HoverAction/HoverActions.js:
/** @jsx React.DOM */
'use strict';
var StyleSheet = require('react-style');
var React = require('react');
var HoverActionStyles = StyleSheet.create({
normal: {
height: '200px',
width: '200px',
border: '1px solid black'
}
});
var …Run Code Online (Sandbox Code Playgroud) 我将相同的数据提供给Google Analytics网络视图报告和Google Analytics应用视图报告.出于某种未知原因,虽然"受众概览"数字对于App View报告与Web View报告的要求要小得多.数据来自一个可以在桌面,移动或Android应用程序内打开的网站(因为Android应用程序只是包装网站).有谁知道那是为什么?
这是根据谷歌的两个报告视图之间的区别如下.阅读它似乎说两个报告视图应该显示相同的数据.(https://support.google.com/analytics/answer/2649553?vid=1-635809178639378105-4104360362#WebVersusAppViews):
创建视图时,您可以在应用视图和Web视图之间进行选择.这两种视图类型为您提供略有不同的分析体验,但在其他方面是相同的.例如,应用视图会为您提供一些在网络视图中无法使用的报告,例如崩溃和例外,Google Play报告和网络视图会为您提供网站内容报告.
无论您如何收集这些匹配,两种类型的视图都可以显示您发送给您的财产的任何数据.例如,您可以在网络视图中查看应用视图和应用数据中的网络数据.
如果您只收集并向Google发送一种类型的数据,我们建议您使用能够提供最佳分析体验的视图.例如,如果您只从移动应用程序收集数据,请在创建视图时选择应用程序,如果仅从网站收集数据,请选择网络.
我在我的网站上使用jPlayer 2.7.1(https://cdnjs.cloudflare.com/ajax/libs/jplayer/2.7.1/jquery.jplayer/jquery.jplayer.min.js)为用户播放音轨.音轨来自S3桶.最近,一些通过使用Chrome Mobile 30,44,45的Android WebView访问该网站的用户在播放音频文件时遇到问题.
常见的抱怨似乎是开始播放的曲目的变化,然后在某些时候它会卡住,跳过或滞后于剩余的音频.用户的一些具体引用:
"几分钟后,声音停止并重复同一个词,就像是有点滞后."
"当我按下播放时,录制会以第二个片段播放(有点像是非常慢的加载),非常脱节.时间栏也没有进展,它只是停留在0:00或有时停留在0:01然后再回来,即使它正播放录音的后期部分."
"音频播放几秒钟,停止播放,跳过大量内容,再播放一两秒,停止,跳过等等."
"如果它确实启动它会持续切断/发出噼啪声并且时间不会开始倒计时."
不幸的是,我自己无法重现这个问题.
您认为可能导致此问题的原因是什么?可以转移到jPlayer 2.9.2修复问题吗?
目前还不清楚在使用Redis Cloud和Heroku的情况下使用的正确配置参数是什么,并且无法在线找到正常运行的示例.
这是我目前的代码:
const express = require('express')
const session = require('express-session')
const RedisStore = require('connect-redis')(session);
...
const server = express()
server.use(bodyParser.json())
server.use(bodyParser.urlencoded({ extended: false }))
server.use(cookieParser())
server.use(session({
secret: token_secret,
// create new redis store.
store: new RedisStore({ url: 'redis://rediscloud:...@...redislabs.com:11111'}),
resave: true,
saveUninitialized: true
}));
Run Code Online (Sandbox Code Playgroud)
在Redis Cloud和Heroku作为会话存储(使用快速会话)的情况下,我是否应该重新保存并将unitialized设置为true或false?
另外,cookieParser是否影响会话并且需要在那里?或者它是独立的,只是解析来自客户端的cookie,与Redis的服务器端会话存储无关?此外,cookie解析器是否应该将秘密传递给函数?
最后,bodyParser应该在server.use(session)之前还是之后,urlencoded extended应该设置为true还是false?
是否可以创建与Slack的自定义网站集成,类似于Youtube所做的?我有一个由独立媒体播放器组成的网页.我希望Slack用户能够在分享到我的媒体播放器的链接时直接在一个松弛的转播中使用我的媒体播放器,类似于Youtube所做的.我不想通过转到单独的浏览器窗口强制用户离开对话.
这可能吗?
以下是我要为自定义媒体播放器做的事情的示例:
reactjs ×5
node.js ×4
javascript ×3
android ×2
webpack ×2
bots ×1
css ×1
dom-events ×1
express ×1
facebook ×1
file-upload ×1
heroku ×1
http ×1
ios ×1
jplayer ×1
jquery ×1
mouseevent ×1
react-native ×1
redis ×1
session ×1
slack ×1
slack-api ×1
video ×1
web ×1
youtube ×1