SweetAlert2:如何从react组件获取值?

时间:2018-11-21 08:59:15

标签: javascript reactjs sweetalert2

现在sweetalert2中有sweetalert2-react-content,可让您使用React组件在Swal中显示。 很好,但是我似乎找不到如何从该组件中获取值的方法。

例如,我有一个具有两个输入的组件。

MySwal.fire({
  html: <MyComponent />
}).then(value => {
  // how to get here my values from MyComponent??
});

我想获取是否从该组件中选中了复选框。

我试图在我称为onChangeHandler的组件中提供这些输入和MySwal的状态。但这似乎根本不起作用,复选框不会更改。

该库的先前版本中有swal.setActionValue,这似乎是我所需要的,但不适用于当前的sweetlalert2版本。

总而言之,当我在提示上按OK时,我想获得Promise中的值,该值将由MyComponent设置。

DEMO

2 个答案:

答案 0 :(得分:0)

您可以根据文档尝试使用 preConfirm()。通过perConfirm,我们可以传递自定义值。

请找到以下示例:https://codesandbox.io/s/kk2nv9nmy7

答案 1 :(得分:0)

以下技巧可以完成这项工作:

gifDownload.attr("download", "image.gif");

长话短说,您可以将let returnedValue; MySwal.fire({ html: <Options onChange={value => (returnedValue = value)} /> }).then(value => { console.log(returnedValue); }); 回调传递给组件,并将其用于更新存储值的变量。它不是很漂亮,但是可以完成工作。

您可以在https://codesandbox.io/s/o1005xv1q

中找到完整的示例