【问题标题】:What's the difference between model and props in `mobx-state-tree`?`mobx-state-tree` 中的模型和道具有什么区别?
【发布时间】:2020-05-09 12:43:53
【问题描述】:

在我看来,人们正在交替使用modelprops。我尝试查找有关道具的文档但失败了。谁能告诉我区别?

【问题讨论】:

    标签: mobx mobx-state-tree


    【解决方案1】:

    model 方法创建一个新模型。它有两个参数:

    • 姓名
    • 属性(可选)

    您可以创建新模型并指定属性。或者您可以先创建模型,然后使用props 方法“扩展”它(props 是属性的缩写)。 TodoOne 和 TodoTwo 是相同的。

    const TodoOne = types.model("Todo", {title: types.string, done: types.boolean})
    
    const TodoTwo = types.model("Todo")
      .props({
        title: types.string, 
        done: types.boolean
      }) 
    
    

    但这有什么用呢? props 方法不会改变当前类型,它会创建一个新类型并对其进行扩展。这意味着我们可以添加或覆盖现有的道具。

    const Todo = types.model("Todo", {title: types.string, done: types.boolean})
    
    const ColorfulTodo = Todo.props({color: types.string}) // returns a new model with a new property
    
    const DefaultTodo = Todo.props({done: false}) // returns a new model with done property overwritten to default to false
    
    

    viewsactions 方法可以像props 方法一样扩展模型。

    【讨论】:

      【解决方案2】:

      模型需要属性。

      const Todo = types
          .model("Todo", {
              title: types.string,
              done: false
          })
      

      在上面的示例中,我们创建了一个Todo 模型(MST 模型),它具有两个属性:

      title 这是一个String

      done 女巫是 Boolean,默认为 false

      所以当您听到props 时,他们指的是模型的属性。

      【讨论】:

        猜你喜欢
        • 2018-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-06
        • 1970-01-01
        • 2019-11-26
        • 2021-12-24
        • 1970-01-01
        相关资源
        最近更新 更多