微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有表单参数的 react-admin 重定向按钮

如何解决带有表单参数的 react-admin 重定向按钮

我正在尝试在 react admin 中创建一个简单的表单,用于收集国家和语言的用户选项 然后使用由用户选择构建的链接重定向到第 3 方网站。

// in LocationInput.js
import Select from '@material-ui/core/Select';
import MenuItem from '@material-ui/core/MenuItem';
import { useInput } from 'react-admin';

const LocationInput = props => {
    const {
        input,Meta: { touched,error }
    } = useInput(props);

    return (
        <Select
            label="Location"
            {...input}
        >
            <MenuItem value="GB">United Kingdom</MenuItem>
            <MenuItem value="SE">Sweden</MenuItem>
        </Select>
            <Select
            label="Language"
            {...input}
        >
            <MenuItem value="en_UK">English</MenuItem>
            <MenuItem value="sv_SE">Swedish</MenuItem>
        </Select>
     
    );
};
export default LocationInput;
const LocationEdit = props => (
    <Edit {...props}>
        <SimpleForm>
            <LocationInput
                source="location"
               
            />
**how do I add a button here to redirect to a link having parameters chosen by the user
ex: https://cnn.com/countryselected/languageselected. (the link is outside of my app in a 3rd party website)**
        </SimpleForm>
    </Edit>

稍后编辑。

我尝试使用官方文档中描述的重定向功能https://marmelab.com/react-admin/CreateEdit.html#redirection-after-submission

然而,这似乎只是为了在内部重定向react-admin 路由,而不是重定向到根据用户在我的创建表单中输入构建的 URL 的外部网站。

const redirect = 'https://cnn.com';
...
const LocationEdit = props => (
    <Edit {...props}>
        <SimpleForm redirect={redirect}>
            <LocationInput
                source="location"
               
            />

解决方法

<SimpleForm> 用于编辑记录。在此示例中,您似乎并未尝试保留更改,而只是为了收集数据以稍后重定向用户。在这种情况下,我不会使用 <SimpleForm>,而是使用 react-final-form 的 <Form>(参见 https://final-form.org/docs/react-final-form/api/Form)。

至于 redirect 属性,它接受一个函数值,所以你通常可以这样写:

const redirect = (basePath,id,data) => `'https://cnn.com/location/${data.location}`;
...
const LocationEdit = props => (
    <Edit {...props}>
        <SimpleForm redirect={redirect}>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。