有没有办法改变 html 行而不是重新渲染整个组件?

Is there a way to change an html line instead of rerendering the whole component?

我是 React 新手,想知道是否有办法在渲染方法中每秒更改一个 html 行,而不是重新渲染整个组件?

我必须制作一个显示时间的状态栏,所以日期需要每秒更新一次。是否可以只更改菜单栏时间 div?

    componentDidMount: function() {
        const self = this;
        self.interval = setInterval(function() {
            self.setState({
                now: new Date(),
            });
        }, 1000);
    },

    componentWillUnmount: function() {
        clearInterval(this.interval);
    },


    render() {
        return (
            <div className="Menubar">
                <div className="Menubar-name">
                    <p>{this.state.login}</p>
                </div>
                <div className="Menubar-date">
                    <p><Time value={this.state.now} format="DD/MM/YYYY" /></p>
                </div>
                <div className="Menubar-time">
                    <p><Time value={this.state.now} format="HH:mm:ss" /></p>
                </div>
            </div>
        );
    },

感谢您的回答。

React 在状态改变时重新渲染整棵树,但在渲染之后它计算虚拟 dom 和 dom 之间的差异,而在 dom 中唯一的区别是重新渲染。 所以基本上你不需要做任何事情,React 会注意在 dom 中只有计时器文本会改变。

是不是很棒:p

实际上,整个组件并没有重新渲染。 render() returns 虚拟实例 DOM 并且仅应用当前 DOM 和新 DOM(由 render() 返回)之间的差异。所以你不需要担心这种情况下的性能。

当你觉得自己的表现不佳时,你可以考虑实施shouldComponentUpdate。至于我,我只需要执行一次或两次。 React 本身在极少数情况下需要优化。

祝你好运!