一位客户要求我研究 Symfony UX 的Live Components以在内部项目中使用。我们/他们已经脱离了它的 alpha 状态,而且它可能会随着时间的推移而改变和打破,所以没有必要指出这一点。
问题是:我一切正常,但 Live 组件就像常规的 Twig 组件一样,在不刷新页面的情况下实际上不会交互式更新。我已经从字面上从文档中获取了一个示例,试图让它运行,但它只是不会更新。有熟悉这些组件的人能够指出我可能做错了什么吗?
首先,我已将该组件包含在 Composer 中:
"require": {
...
"symfony/ux-live-component": "^2.4",
...
}
Run Code Online (Sandbox Code Playgroud)
package.json还包含所需的内容:
"devDependencies": {
...
"@hotwired/stimulus": "^3.0.0",
"@symfony/stimulus-bridge": "^3.2.0",
"@symfony/ux-live-component": "file:vendor/symfony/ux-live-component/assets",
...
}
Run Code Online (Sandbox Code Playgroud)
我的 webpack 配置中启用了 Stimulus 桥:
Encore.enableStimulusBridge('./assets/controllers.json')
Run Code Online (Sandbox Code Playgroud)
我已将其引导文件包含在我的主 JS 文件中:
import './bootstrap';
Run Code Online (Sandbox Code Playgroud)
最后我制作了这个组件和模板:
<?php
declare(strict_types=1);
namespace App\Component;
use Symfony\UX\LiveComponent\Attribute\AsLiveComponent;
use Symfony\UX\LiveComponent\Attribute\LiveProp;
use Symfony\UX\LiveComponent\DefaultActionTrait;
#[AsLiveComponent('random_number')]
class RandomNumberComponent
{
use DefaultActionTrait;
#[LiveProp(writable: true)]
public int $max = 1000;
public function getRandomNumber(): int
{
return rand(0, $this->max); …Run Code Online (Sandbox Code Playgroud)