我有一个列表:["a"; "a"; "a"; "c"; "b"; "c"; "c"; "a"; "a"; "d"; "x"; "e"; "e"; "e"]我想压缩它。换句话说,删除每个索引左侧和右侧的重复项。
该函数compress l应该返回["a"; "c"; "b"; "c"; "a"; "d"; "x"; "e"]
我已经在 OCaml 中尝试过这个功能:
let compress list =
List.filteri
(fun i el -> compare (List.nth list i) el != 0)
list;;
Run Code Online (Sandbox Code Playgroud)
但它向我抛出错误异常:失败“nth”。
Props 是我们所说的在执行时传递给组件函数的对象,它表示绑定到其 JSX 的所有属性。Props 对象是只读的,并且具有封装在 Object getter 中的反应性属性。这使得它们具有一致的形式,无论调用者是否使用信号、信号表达式或静态值。您可以通过 props.propName 访问它们。
因此,不只是解构 props 对象也非常重要,因为如果不在跟踪范围内完成,就会失去反应性。一般来说,访问 Solid 基元或 JSX 之外的 props 对象上的属性可能会失去反应性。这不仅适用于解构,还适用于展开和 Object.assign 等函数。
我在solid js教程中发现了它https://www.solidjs.com/tutorial/props_defaults 。但我仍然不明白道具的解构如何导致反应性丧失。
const { name } = props;
return <div>{name}</div>
Run Code Online (Sandbox Code Playgroud)
return <div>{props.name}</div>
Run Code Online (Sandbox Code Playgroud)
我不知道这些之间有什么区别。我想我还不明白反应性是如何运作的SolidJS。
他们是否为组件功能和 JSX 做了更多的事情?