Closed charlzyx closed 2 years ago
https://user-images.githubusercontent.com/18055018/192175833-1306cce9-0239-4f44-a9b7-6226098fa571.mov
直接表现是这样的:
拖动列表中第一行或者最后一行到其他位置, 其中 AM I TOP、AM I BOTTOM, $index 三个字段的值没有响应更新,这三列的值是通过这样的 schema {{}} 双括号表达式写的
{{}}
// top
{ "x-value": "{{$index===0 ?'TOP':''}}", "x-value": "{{$index===$records.length -1 ?'BOTTOM':''}}" "x-value": "{{$index}}" }
所以根本原因可能是 Schema ExpressionScope 注入的值, 在表达式中使用的话, 不会响应式的更新?还是说除非是在 x-reactions 中使用,否则不保证会响应式触发更新
ExpressionScope
Schema 中的 {{}} 表示能够响应 scope 中的变化, 即 其中 第一、二列的 AM I TOP、AM I BOTTOM 锁定在第一、最后, $index 随着拖动更新
TOP、BOTTOM 两个字段随着行数据移动, 没有根据表达式实时计算
@formily/antd@2.2.5
$index不是响应式数据,你这个场景应该用Text组件,受控渲染就行了
@janryWang $index 需要弄成响应式的,场景:上移按钮index === 0时置灰,同等下移按钮 index === $records.length - 1 时也需要置灰
index === 0
index === $records.length - 1
解决方案,把依赖$index的逻辑改成,依赖$self.index,这个是响应式的,看来是我大意了,给了$index,这个是没法响应式的
Reproduction link
Steps to reproduce
https://user-images.githubusercontent.com/18055018/192175833-1306cce9-0239-4f44-a9b7-6226098fa571.mov
直接表现是这样的:
拖动列表中第一行或者最后一行到其他位置, 其中 AM I TOP、AM I BOTTOM, $index 三个字段的值没有响应更新,这三列的值是通过这样的 schema
{{}}
双括号表达式写的// top
所以根本原因可能是 Schema
ExpressionScope
注入的值, 在表达式中使用的话, 不会响应式的更新?还是说除非是在 x-reactions 中使用,否则不保证会响应式触发更新What is expected?
Schema 中的
{{}}
表示能够响应 scope 中的变化, 即 其中 第一、二列的 AM I TOP、AM I BOTTOM 锁定在第一、最后, $index 随着拖动更新What is actually happening?
TOP、BOTTOM 两个字段随着行数据移动, 没有根据表达式实时计算
Package
@formily/antd@2.2.5