小编tge*_*cho的帖子

在Elm中封装嵌套的组件端口通信?

我有一个可重复使用的Elm组件,可以在多个地方重复使用(在指南教程的风格中.我有一个Javascript函数,我想通过端口与之通信,但创建一个端口订阅会导致每个"实例"我的组件接收我从Javascript发回的每条消息.

理想情况下,父组件不需要进行任何超出常规的过滤Cmd.map ChildMsg.我能想到的最简单的解决方案是为每个子模型添加一个ID并过滤子项自己的更新函数,但这有点不幸,如果一个ID尚不存在,则需要我编写一个ID.

作为我理想结果的一个示例,Http模块允许您返回任务并接收结果,仅针对请求它的特定实例.我已经设法用一个简单的Native模块来模拟这种行为:https://github.com/tgecho/elm-custom-task-example

function getNumber(number) {
    return _elm_lang$core$Native_Scheduler.nativeBinding(function(callback) {
            return callback(_elm_lang$core$Native_Scheduler.succeed(number));
    });
}
Run Code Online (Sandbox Code Playgroud)

然后我的组件可以通过返回任务来调用此函数Task.perform NaN Increment (Number.getNumber 1),并将结果作为Increment消息返回.

我错过了什么?有没有办法封装端口通信而无需编写本机代码或向所有内容添加ID?

javascript elm

7
推荐指数
0
解决办法
266
查看次数

标签 统计

elm ×1

javascript ×1