【问题标题】:How to render new React Component into rendered DOM?如何将新的 React 组件渲染到渲染的 DOM 中?
【发布时间】:2015-11-03 14:17:44
【问题描述】:

我有 3 个父组件和 2 个子组件:

import React from 'react';
import FirstChild from './FirstChild';
import SecondChild from './SecondChild';

export default class ComponentName extends React.Component {
    render() {
        return (
            <div>
                <h1>ComponentName</h1>
                <div id="renderChildHere">
                    <FirstChild />
                </div>
                <button onClick={this.clickHandler}>Replace FirstChild with SecondChild</button>
            </div>
        );
    }

    clickHandler() {
        ???
    }
}

FirstChild 最初被渲染。如何卸载它并将 SecondComponent 安装在 #renderChildHere Dom 元素中?

我使用没有第三方插件的 React 0.13.3 和 Flux。

【问题讨论】:

    标签: reactjs reactjs-flux flux


    【解决方案1】:

    你应该在ComponentName 上有一个状态,告诉你要渲染哪个子组件。为简单起见,我将其命名为childComponentName,它可以将firstComponentsecondComponent 保存为字符串。在您的 this.clickHandler 上,您应该执行以下操作:

    this.setState({childComponentName: 'secondComponent'});
    

    现在 React 将再次渲染 ComponentName。在render方法中,您可以根据childComponentName状态的值来选择是渲染&lt;FirstComponent/&gt;还是&lt;SecondComponent/&gt;

    当然这只是为了简单,所以你可以理解这个概念。

    您只会在非常特定的场景中手动挂载和卸载组件。对于所有其他人来说,这是要走的路。

    【讨论】:

    • 我应该通过通量还是直接在组件中更改状态??
    • @stkvtflw 您应该直接更改状态。 Flux 用于管理数据.. 比如cars 的列表、contacts 的列表、登录的user。对于特定于视图的状态,不需要 Flux。
    最近更新 更多