Я пытался использовать компонент списка сортировки ( реагировать на сортировку-hoc ) в проекте ReasonReact. Но я столкнулся с ошибкой, которую пытался выяснить пару часов.
Шаги, за которыми я следовал:
- сделал связки @bs для
sortableContainer()
и sortableElement()
для модуля react-sortable-hoc
- подделал реагирующий класс, возвращенный обеими функциями, и поместил его в файл
SortableContainer.js
и SortableElement.js
- Сделал еще один компонент React, называемый Todolist, который использует компонент SortableContainer, а SortableContainer использует компонент SortableElement.
Фрагмент кода
/* SortableContainer.re */
[@bs.val] [@bs.module "react-sortable-hoc"] external sortableContainer : 'a =>
ReasonReact.reactClass = "";
let sortableContainerReactClass: ReasonReact.reactClass = sortableContainer(() => {
<ul>(ReasonReact.createElement(SortableElement))</ul>
});
let make = (children) =>
ReasonReact.wrapJsForReason(
~reactClass=sortableContainerReactClass,
~props = { "onSortEnd": () => {} },
children
);
/* SortableElement.re */
[@bs.val] [@bs.module "react-sortable-hoc"] external sortableElement : 'a =>
ReasonReact.reactClass = "";
let sortableElementReactClass: ReasonReact.reactClass = sortableElement(() => {
<li>(ReasonReact.stringToElement("testing is good"))</li>
});
let make = (children) =>
ReasonReact.wrapJsForReason(
~reactClass=sortableElementReactClass,
~props = { "onSortEnd": () => {} },
children
);
/* List.re */
let component = ReasonReact.statelessComponent("List");
let make = (~items=[||], _children) => {
{
...component,
render: (_self) => {
}
}
};
Когда я компилирую этот код, я получаю эту ошибку.
# ERROR
We've found a bug for you!
/Users/jaisonjustus/code/todotabre/src/components/SortableContainer.re 5:34-48
3 │
4 │ let sortableContainerReactClass: ReasonReact.reactClass = sortableConta
iner(() => {
5 │ <ul>(ReasonReact.createElement(SortableElement))</ul>
6 │ });
7 │
The variant constructor SortableElement can't be found.
- If it's defined in another module or file, bring it into scope by:
- Annotating it with said module name: let food = MyModule.Apple
- Or specifying its type: let food: MyModule.fruit = Apple
- Constructors and modules are both capitalized. Did you want the latter?
Then instead of let foo = Bar, try module Foo = Bar.
Что не так в этом коде?