我想在 React 中无限期地重新加载静态 URL 上的图像。通过一些搜索,我得出了以下不太理想的解决方案。它有效,但我想消除图像加载的闪烁。我意识到问题在于组件被重新渲染,然后图像加载。我见过几个例子,它们使用两个图像,一个作为占位符,加载一个隐藏直到使用onLoad
和加载setState
,但它们都假设图像数量有限。如何使其显示最后一个图像,直到CardMedia
加载新图像,然后每五秒更换一次而不闪烁?
import React from 'react';
import ReactDOM from 'react-dom';
import { Card, CardMedia, CardTitle } from 'react-toolbox/lib/card';
const LIVE_IMAGE = 'https://cdn-images-1.medium.com/max/1600/1*oi8WLwC2u0EEI1j9uKmwWg.png';
class LiveImageCard extends React.Component {
constructor(props) {
super(props);
this.state = {
liveImage: null
};
}
componentDidMount() {
this.interval = setInterval(
() => this.setState({
liveImage: `${LIVE_IMAGE}?${new Date().getTime()}`,
}),
5000
);
}
componentWillUnmount() {
clearInterval(this.interval);
}
render() {
return (
<Card style={{width: '350px'}}>
<CardTitle title="Live Image" />
<CardMedia
aspectRatio="wide"
image={this.state.liveImage}
/> …
Run Code Online (Sandbox Code Playgroud) 我正在学习 Rust,最近进行了一次练习,我必须迭代可能朝任一方向发展的数字。我尝试了以下方法,得到了意想不到的结果。
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
struct Point {
x: i32,
y: i32
}
fn test() {
let p1 = Point { x: 1, y: 8 };
let p2 = Point { x: 3, y: 6 };
let all_x = p1.x..=p2.x;
println!("all_x: {:?}", all_x.clone().collect::<Vec<i32>>());
let all_y = p1.y..=p2.y;
println!("all_y: {:?}", all_y.clone().collect::<Vec<i32>>());
let points: Vec<Point> = all_x.zip(all_y).map(|(x, y)| Point { x, y }).collect();
println!("points: {:?}", points);
}
Run Code Online (Sandbox Code Playgroud)
输出是
all_x: [1, 2, 3]
all_y: []
points: []
Run Code Online (Sandbox Code Playgroud)
经过一番谷歌搜索后,我找到了一个解释和一些 …
我已经创建了一个使用dialogflow-fillfillment的webhook,以根据平台正确返回不同的数据,包括我为其他服务创建的自定义数据。我已经测试过Webhook,并且知道如果将其更改为originalDetectIntentRequest.source
自定义有效负载中使用的平台,它将可以正常工作。
{
"payload": {
"jokes-api": {
"success": true,
"text": "These are some jokes",
}
},
"outputContexts": []
}
Run Code Online (Sandbox Code Playgroud)
我能够使用dialogflow-的NodeJS客户端-V2的sessions.detectIntent
得到响应,但fullfilment回来与平台设置为PLATFORM_UNSPECIFIED
,而不是定制的有效载荷我想要的。
[{
"responseId": "c56c462f-bb3b-434a-b318-3739f58e6f6d",
"queryResult": {
"fulfillmentMessages": [{
"platform": "PLATFORM_UNSPECIFIED",
"card": {
"buttons": [],
"title": "Jokes",
"subtitle": "These are some jokes",
"imageUri": ""
},
"message": "card"
}],
"queryText": "tell me a joke",
/* ... */
"intent": {
"name": "projects/my-jokes/agent/intents/56887375-3047-4993-8e14-53b20dd02697",
"displayName": "Jokes",
/* ... */
},
"intentDetectionConfidence": 0.8999999761581421,
}
}]
Run Code Online (Sandbox Code Playgroud)
查看我的Webhook日志,可以看到存在该originalDetectIntentRequest
对象,但未设置源。 …