首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无效钩子创建Liferay React组件

无效钩子创建Liferay React组件
EN

Stack Overflow用户
提问于 2022-01-14 09:47:23
回答 1查看 250关注 0票数 0

我正在尝试创建基于Liferay的Clay组件的自定义反应组件。

例如,只使用ClayButton即可工作,但一旦我尝试使用钩子(如React.useState),浏览器控制台就会告诉我:

小型化反应错误#321;访问https://reactjs.org/docs/error-decoder.html?invariant=321获取完整消息

完整的信息告诉我,我可能在使用与react和react不匹配的版本。我没有。根据这里描述的测试,我也没有两种不同版本的react。

我在https://github.com/ReFl3x0r/liferay-react-component-test中创建了一个最小的示例模块,可以在Liferay工作区中进行测试。

Liferay论坛中也有一个较旧的线程讨论这个错误,但没有解决方案。(https://liferay.dev/ask/questions/development/re-lr-7-3-react-portlet-invalid-hook-call)

我做错什么了?

编辑:试图指出主要的代码片段。

第一个CustomButtonFail.es.js:

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

import ClayButton from '@clayui/button';

const CustomButton = () => {

    const [name, setName] = React.useState('test');

    return (
        <ClayButton displayStyle='primary'>
            TEST
        </ClayButton>
    );
}

export default CustomButton;

package.json:

代码语言:javascript
复制
{
    "dependencies": {
        "@clayui/button": "^3.40.0",
        "@clayui/css": "3.x",
        "react": "^16.12.0",
        "react-dom": "^16.12.0"
    },
    "devDependencies": {
         "@liferay/npm-scripts": "47.0.0",
         "react-test-renderer": "^16.12.0"
    },
    "name": "component-test",
    "scripts": {
        "build": "liferay-npm-scripts build"
    },
    "version": "1.0.0"
}

包括组件(缩写)的view.jsp:

代码语言:javascript
复制
<%@taglib uri="http://liferay.com/tld/react" prefix="react" %>

<div class="react-component-failing">
    <react:component
        module="js/CustomButtonFail.es"
    />
</div>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-19 10:31:27

我终于让它起作用了。像这样减少package.json:

代码语言:javascript
复制
{
  "devDependencies": {
    "@liferay/npm-scripts": "47.0.0"
  },
  "name": "component-test",
  "scripts": {
    "build": "liferay-npm-scripts build"
  },
  "version": "1.0.0"
}

并在模块根目录中添加".npmbundlerrc“内容:

代码语言:javascript
复制
{
  "config": {
      "imports": {
          "frontend-taglib-clay": {
              "@clayui/button": ">=3.40.0",
              "@clayui/css": ">=3.x"
          },
          "@liferay/frontend-js-react-web": {
              "react": ">=16.12.0"
          }
      }
  }
}

成功了。

工作示例位于https://github.com/ReFl3x0r/liferay-react-component-test/tree/working

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

https://stackoverflow.com/questions/70708700

复制
相关文章

相似问题

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