【问题标题】:Why does the twitter widget not re-render reactjs为什么 twitter 小部件不重新渲染 reactjs
【发布时间】:2018-08-29 22:19:02
【问题描述】:

我在我的应用程序中使用 twitter 嵌入时间线来显示公司 twitter 帐户的 twitter 提要。

当我从 API 获得结果时,状态更改为正确的值,但 twitter 小部件似乎没有改变

TwitterCard.js

import React from "react";

export class TwitterCard extends React.Component{
    render() {
        return (
            <a className="twitter-timeline" href={this.props.href} data-height="100%">Tweets by {this.props.ticker}</a>
        )
    }
}

我附上了 React 插件输出的屏幕截图,以证明状态变化。

父类比较大,所以我贴出了渲染方法:

render() {
        return (
            <div>
                <NavBar/>
                <div className="container-fluid">
                    <div className="row">
                        <NavBarSide clickHandler={(url) => this.handleNavClick(url)}/>
                        <Dashboard
                            errorChart={this.state.errorChart}
                            twitter={this.state.twitter}
                            status={this.state.status}
                        />
                    </div>
                </div>
            </div>
        )
    }

父级将这些值传递给仪表板:

import React from "react";

import { Switch, Route } from 'react-router-dom';
import { Chart } from "./Chart";
import { TwitterCard } from "./TwitterCard";


export class Dashboard extends React.Component {

    render() {
        return (
            <div className="col-md-9 ml-sm-auto col-lg-10 pt-2 px-3">
                <div className="row">
                    <div className="col-lg-8">
                        <div className="row">
                            <div className="col-lg-6">
                                <div className="card border-0">
                                    <div className="card-body">
                                        <Chart chart={this.props.errorChart}/>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div className="col-lg-4">
                        <TwitterCard href={this.props.twitter} ticker={this.props.ticker}/>
                    </div>
                </div>
            </div>
        )
    }
}

【问题讨论】:

  • 可以发一下家长吗?
  • 父类是一个相当大的类,它做了很多事情。渲染方法有用吗?
  • 可能足以确定问题
  • 我看不到 &lt;TwitterCard /&gt; 仍然呈现在哪里
  • 啊,&lt;TwitterCard/&gt; 在仪表板中呈现,所以我会发布。

标签: javascript reactjs twitter


【解决方案1】:

您可以在工单发生变化时强制更新 twitter 组件,方法是使用您在仪表板组件中呈现它的代码来键入它:

<TwitterCard
  key={this.props.ticker}
  href={this.props.twitter}
  ticker={this.props.ticker}
/>

【讨论】:

  • 添加后,我收到错误Uncaught DOMException: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.
  • 添加 div 可以阻止错误,但现在小部件不会重新渲染。手柄已经改变,这是朝着正确方向迈出的一步。
  • 您是否查看过您用来操作节点和显示推文的库的问题跟踪器?
  • 我会看看 :) 为所有帮助干杯。
猜你喜欢
相关资源
最近更新 更多
热门标签