首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wordpress Gutenberg:在前端反应组件

Wordpress Gutenberg:在前端反应组件
EN

Stack Overflow用户
提问于 2018-08-09 15:41:39
回答 1查看 5.7K关注 0票数 10

古腾堡仍然很新,但我仍然希望有人遇到这个问题,并找到了解决办法。

我使用创建-guten-块来完成一个项目,并创建了一个测试块。我遇到的问题是,当我试图使用React组件修改前端的状态时,什么都不会发生。组件通过save()很好地加载,但是当您尝试执行一些简单的操作(比如切换列表)时,前端仍然对状态更改没有响应。我还将注意创建-guten-块不会加载任何前端JS,因此我将编译好的javascript交换到前端加载,但仍然无法使其工作。

下面是一些代码,作为一个简单的测试示例,我从Codecademy中提取了一些代码。当您选择一个名称时,它会更改sibling.js中的文本以显示名称。该代码在创建-反应-应用程序中运行良好,但在Gutenberg中作为块在前端不做任何操作:

block.js

代码语言:javascript
复制
import { Parent } from './parent';

// More code here 

save: function( props ) {
    return (
          <div>
              <Parent />
          </div>
     );
 },

parent.js

代码语言:javascript
复制
import React from 'react';
import { Child } from './child';
import { Sibling } from './sibling';

export class Parent extends React.Component {
    constructor(props) {
        super(props);

        this.state = { name: 'Frarthur' };

        this.changeName = this.changeName.bind(this);
    }

    changeName(newName) {
        this.setState({
        name: newName
        });
    }

    render() {
        return (
        <div>
            <Child onChange={this.changeName} />
            <Sibling name={this.state.name} />
        </div>
        );
    }
};

child.js

代码语言:javascript
复制
import React from 'react';

export class Child extends React.Component {
    constructor(props) {
        super(props);

        this.handleChange = this.handleChange.bind(this);
    }

    handleChange(e) {
        const name = e.target.value;
        this.props.onChange(name);
    }

    render() {
        return (
        <div>
            <select
            id="great-names"
            onChange={this.handleChange}>

                <option value="Frarthur">Frarthur</option>
                <option value="Gromulus">Gromulus</option>
                <option value="Thinkpiece">Thinkpiece</option>
            </select>
        </div>
        );
    }
}

sibling.js

代码语言:javascript
复制
import React from 'react';

export class Sibling extends React.Component {
    render() {
        const name = this.props.name;
        return (
        <div>
            <h1>Hey, my name is {name}!</h1>
            <h2>Don't you think {name} is the prettiest name ever?</h2>
            <h2>Sure am glad that my parents picked {name}!</h2>
        </div>
        );
    }
}
EN

回答 1

Stack Overflow用户

发布于 2018-11-05 12:17:22

我的理解是,古登堡只支持方程编辑器方面的互动性。是的,您在React中定义了视图端,但是在保存post时,这个视图被呈现为静态标记,然后只将这个静态标记传递给客户机(读取器)。

好处是您可以免费获得“服务器端呈现”,并且您的客户端不需要响应查看帖子。缺点是,如果您想要进行客户端交互,这超出了Gutenburg的范围,您将不得不找到自己的方式。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51771125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档