React 中的动态模板

Dynamic templates in React

我想创建一个简单的 Wizard 组件,它应该尽可能通用。

我想为正文内容注入 2 个参数:template(包含一些逻辑)及其 context

export class ParentClass extends React.Component {
    render() {
        let template = `Some text: {this.context.testFunc()}`;
        let context = new TestContext();

        return (
            <Wizard template={template} context={context} />
        );
    }
}

export class TestContext {
    testFunc() {
        return "another text";
    }
}

export class Wizard extends React.Component {
    context: null;

    constructor(props) {
        super(props);

        this.context = this.props.context;
    }

    render() {
        return (
            <div>
                {this.props.template}
            </div>
        );
    }
}

问题是 template 中包含的逻辑不执行(它在 Wizard 中将所有内容写为字符串)。

我使用 ES2015Babel 进行编译。

当你使用模板文字时,你必须使用 $.

例如

`Some text: {this.context.testFunc()}`; 

应该是

`Some text: ${this.context.testFunc()}`;

另外,我认为你的渲染函数有问题

render() {
        let template = `Some text: {this.context.testFunc()}`;
        let context = new TestContext();

        return (
            <Wizard template={template} context={context} />
        );
    }

应该是

render() {
    let context = new TestContext();
    let template = `Some text: ${context.testFunc()}`;

    return (
        <Wizard template={template} context={context} />
    );
}

希望对您有所帮助!