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

在 react-admin 中,如何为 UrlField href 添加前缀?

如何解决在 react-admin 中,如何为 UrlField href 添加前缀?

假设我有以下内容

<UrlField source='fbUsername' />

如果结果是 fb 用户名 foo,则此链接相对于 /foo

(?) 我怎样才能给这个网址加上前缀:

https://facebook.com/

所以结果是:

https://facebook.com/${fbUsername}

https://facebook.com/foo

解决方法

<UrlField> 只接受 URL 值。对于您的用例,您应该根据 the UrlField source 编写自定义字段。类似的东西:


import * as React from 'react';
import { Link } from '@material-ui/core';
import { useRecordContext } from 'react-admin';

const MyUrlField = ({ source }) => {
    const record = useRecordContext();
    const value = record && record[source];

    if (value == null) {
        return null;
    }

    return (
        <Link href={`https://facebook.com/${value}`}>
            {value}
        </Link>
    );
});

MyUrlField.defaultProps = {
    addLabel: true,};
,

基于@françois-zaninotto 的回答,我修复了一个语法错误,修复了一些使其工作的缺失 useRecordContext() 参数:

// ###############################################
// FbUrlField.js
import * as React from 'react';
import { Link } from '@material-ui/core';
import { useRecordContext } from 'react-admin';

const FbUrlField = ( props ) =>
{
    const { source,target,rel } = props;
    const record = useRecordContext(props);
    const value = record && record[source];

    if (value == null) {
        return null;
    }

    return (
        <Link href={`https://facebook.com/${value}`} target={target} rel={rel}>
            {value}
        </Link>
    );
};

FbUrlField.defaultProps = {
    addLabel: true,};

export default FbUrlField;


// ###############################################
// SomeList.js
import FbUrlField from './FbUrlField';
[...]
<FbUrlField
    label='FB'
    source='fbUsername'
    target='_blank' // New window
    rel="noopener noreferrer" // For security
/>

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