小编Rob*_*non的帖子

在 React 中重新加载实时图像而不闪烁

我想在 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)

javascript reactjs react-toolbox

5
推荐指数
1
解决办法
6036
查看次数

在 Rust 中动态创建任一方向的范围

我正在学习 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)

经过一番谷歌搜索后,我找到了一个解释和一些 …

iterator range rust

4
推荐指数
2
解决办法
1392
查看次数

如何在Dialogflow NodeJS客户端中设置自定义平台

我已经创建了一个使用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客户端-V2sessions.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对象,但未设置源。 …

node.js google-cloud-platform dialogflow-es

2
推荐指数
1
解决办法
1306
查看次数