首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用js组件的Reason反应

使用js组件的Reason反应
EN

Stack Overflow用户
提问于 2019-04-14 17:04:34
回答 2查看 451关注 0票数 1

我在使用js interop时遇到了麻烦。我尝试使用js组件react-slick,如下所示:

代码语言:javascript
复制
// src/interop/Carousel.js
import React from 'react'
import Slider from 'react-slick'

export function Carousel(props) {
  return (
    <Slider>
      <div>
        <h3>{props.name} 1</h3>
      </div>
    </Slider>
  )
}


/* src/Carousel.re */
[@bs.module  "./interop/Carousel"] [@react.component]
external  make: (~name: string) =>  React.element  =  "";

/* src/index.re */
ReactDOMRe.renderToElementWithId(<Carousel  name="ahaha"  />,  "carousel");

但在《webpack》中却遇到了这样的错误:

代码语言:javascript
复制
ERROR in ./lib/js/src/Index.bs.js
Module not found: Error: Can't resolve './interop/Carousel' in '[...]/reason_react_example/lib/js/src'
 @ ./lib/js/src/Index.bs.js 6:15-44

所以看起来BS在编译时不考虑Carousel.js文件?

顺便说一句,我正在关注这个reason-react doc

EN

回答 2

Stack Overflow用户

发布于 2019-04-14 21:35:09

默认情况下,BuckleScript会将生成的js工件放在lib/js/...中,因此您必须编写与之相关的导入,或者配置bsb将工件放在源文件旁边。后一种方法是在bsconfig.json中为给定的package-spec设置"in-source": true。例如:

代码语言:javascript
复制
{
  "package-specs": {
    "module": "commonjs",
    "in-source": true
  }
}

请参阅documentation on the package-specs configuration item

票数 2
EN

Stack Overflow用户

发布于 2019-04-14 23:09:09

经过一些调整后,以下是对我有效的方法:

代码语言:javascript
复制
// lib/js/src/interop/Carousel.js
import React from 'react'
import Slider from 'react-slick'

const Carousel = props => {
  return (
    <Slider>
      <div>
        <h3>{props.name} 1</h3>
      </div>
    </Slider>
  )
}

export default Carousel


// src/Carousel.re    
[@bs.module "./interop/Carousel"] [@react.component]
external make: (~name: string) => React.element = "default"; // handle default export

// src/Index.re
ReactDOMRe.renderToElementWithId(<Carousel name="it works!" />, "carousel");

因为Carousel.js使用的是es6和jsx,所以我需要设置webpack来使用它(es6jsx)。并且bsconfig.json需要有以下设置:

代码语言:javascript
复制
"reason": {
  "react-jsx": 3
},
"package-specs": [
  {
    "module": "commonjs",
    "in-source": false
  }
]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55673630

复制
相关文章

相似问题

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