如何解决将上下文 $('body') 从 jQuery 传递到 Rails 以做出反应
我正在向使用 jQuery 的 rails 页面添加一个 react 组件。我需要访问 react 组件中的 jQuery 上下文以查看 jQuery 所做的 .data()
更改。
haml 页面是这样的:
%div
%input.select-all-checkBox{type: 'checkBox',data: {behavior: 'select-all-checkBox'}}
%label
%div.disabled.dropdown.bulk-action-dropdown
%span.fa.fa-ellipsis-h{type: 'button',data: {toggle: 'dropdown'}}
%ul.dropdown-menu.dropdown-menu-left
%li
= react_component("Component")
%li
%a{href: 'javascript:void(0);',data: {behavior: 'do-something'}}
Do something
%li
%a{href: 'javascript:void(0);',data: {behavior: 'do-something-else'}}
Do something else
var Fun = (function() {
function toggleCheckBox() {
const $element = $(this);
let checkedRecords = getCheckedRecords();
if ($element.prop('checked')) {
addVal(
checkedRecords,$element.data('assessment-record-id'),$element.val()
);
bulkActionDropdown.removeClass('disabled');
} else {
removeVal(checkedRecords,$element.data('assessment-record-id'));
bulkActionDropdown.addClass('disabled');
}
// changes that I want to access in my react component
$element
.closest('[data-behavior~=search-element-container]')
.data('checked-records',checkedRecords);
}
})();
$(document).on(
'change','.abc-def [data-behavior~=search-element-container] [type=checkBox][data-assessment-record-id]',Fun.toggleCheckBox
);
在 React 组件中无法访问 jQuery 使用 .data()
所做的更改。如果我尝试在 React 中使用 jQuery 并搜索对同一 DOM 元素所做的更改,我会找到一个新实例,而不是最初由 jQuery 更改的实例。我需要访问在我的 React 组件中使用 .data()
所做的更改。
具体来说,关于对线路所做的更改:
$element
.closest('[data-behavior~=search-element-container]')
.data('checked-records',checkedRecords);
我需要在我的反应应用程序中使用以下方法读取这些数据:
const values = $('body')
.find('input')
.closest('[data-behavior~=search-element-container]')
.data('checked-records');
但是当我在 React 组件中执行 import $ from 'jQuery'
和上述说明时,它完全创建了一个新的 jQuery 实例。
如何访问我的 React 组件中较早的 jQuery 实例所做的更改?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。