guym4c/twig-prop-types

Twig组件的Prop类型

v2.1.0 2020-06-07 00:01 UTC

This package is auto-updated.

Last update: 2024-09-07 09:19:21 UTC


README

React prop types,已移植到Twig。

安装

使用Composer

composer require guym4c/twig-prop-types

用法

此包使得guym4c/prop-types在Twig中可访问。有关如何使用prop类型的文档,请参考该包。

在Twig中,“Props”指的是当前上下文。您可以使用Twig中的only关键字来阻止上下文作用域被继承。

$twigEnv->addExtension(new Guym4c\TwigProps\PropTypesExtension($twigEnv, $bypass));

扩展构造函数需要当前Twig环境和一个标志来跳过prop检查。您可能希望在生产环境中阻止验证器运行,以避免任何性能问题。(这不会阻止默认prop值的设置。)

验证

要验证您的props,请将以下内容放在模板文件的顶部

{{
    props({
        optionalNumber: PropTypes.number(),
        aString: PropTypes.string().isRequired(),
        anObject: PropTypes.instanceof('An.Instance.Of.This.Class'),
        heey: PropTypes.shape({
            maca: PropTypes.string().isRequired(),
            rena: PropTypes.string().isRequired(),
        }),
    })
}}

Twig特定的差异

当在检查实例类型时给出完全限定的类名,您可以使用点代替反斜杠来简化字符串转义问题,并且开头的反斜杠或点是不必要的。

高级

您可以向构造函数传递额外的属性

public function __construct(
    Twig\Environment $view,
    bool $bypass,
    string $typesGlobal = 'PropTypes',
    array $exclude = [],
    bool $allowExtraProperties = false
) {
  • $twigEnv:当前Twig环境
  • $bypass:
  • $typesGlobal(可选):PropTypes全局的自定义名称
  • $exclude(可选):要从验证中排除的上下文变量。以下划线_(和全局类型)为前缀的变量将自动排除
  • $allowExtraProperties(可选):如果上下文中找到意外的未排除的额外props,prop验证是否应该失败(默认为false)

默认值

如果需要,您必须在调用props()之后设置所需props的默认值,以确保如果未提供则正确失败。

{{
    props({
        someProp: PropTypes.string(),
    })  
    ~
    defaults({
        someProp: 'foo',
    })
}}

使用Twig连接运算符(~)将props()defaults()调用分开,以便它们可以在同一个{{输出块}}中调用而不会引发错误。这两个函数都不返回值,因此这样做是安全的。