当前位置: 首页 > 面试题库 >

React.js 2路绑定:valueLink中的两级深度路径

桓瀚
2023-03-14
问题内容

我的状态是:

[
  {type: "translateX", x: 10},
  {type: "scaleX", x: 1.2}
]

我正在使用双向绑定帮助器,并且无法为以下项提供有效的密钥字符串linkState

this.state.map(function(item, i) {
  return <div><input valueLink={this.linkState( ??? )}></div>
}

如果this.linkState接受一些查询语法(例如从我的示例中"0.type"检索) ,那将很好"translateX"

有什么解决方法吗?

我写了 DeepLinkState mixin
,它代替了React.addons.LinkedStateMixin。用法示例:

this.state.map(function(item, i) {
  return <div><input valueLink={this.linkState([i, "x"])}></div>
}

linkState("0.x") 也是可接受的语法。


问题答案:

编辑:

我意识到for的深路径LinkedState很酷,所以我尝试实现它。
代码:https
://gist.github.com/tungd/8367229用法:http://jsfiddle.net/uHm6k/3/

如文档所述,它LinkedState是一个包装onChange/setState,用于简单的情况。您始终可以编写完整的文档onChange/setState以实现所需的内容。如果您确实要坚持使用LinkedState,则可以使用非mixin版本,例如:

getInitialState: function() {
    return { values: [
        { type: "translateX", x: 10 },
        { type: "scaleX", x: 1.2 }
    ]}
},
handleTypeChange: function(i, value) {
    this.state.values[i].type = value
    this.setState({ values: this.state.values })
},
render: function() {
    ...
    this.state.values.map(function(item, i) {
        var typeLink = {
            value: this.state.values[i].type,
            requestChange: this.handleTypeChange.bind(null, i)
        }
        return <div><input valueLink={typeLink}/></div>
    }, this)
    ...
}

这是正在工作的JSFiddle:http :
//jsfiddle.net/srbGL/



 类似资料:
  • 可以使用路由绑定简化URL或者路由规则的定义,绑定支持如下方式: 绑定到模块/控制器/操作 把当前的URL绑定到模块/控制器/操作,最多支持绑定到操作级别,例如在路由配置文件中添加: // 绑定当前的URL到 index模块 Route::bind('index'); // 绑定当前的URL到 index模块的blog控制器 Route::bind('index/blog'); // 绑定当前的U

  • 本文向大家介绍asp.net-mvc 路由值绑定,包括了asp.net-mvc 路由值绑定的使用技巧和注意事项,需要的朋友参考一下 示例 给定一些默认路由,例如{controller=Home}/{action=Index}/{id?}您是否拥有urlhttps://stackoverflow.com/questions/1558902 这将转到QuestionsController并将值1558

  • 给定两个字符串 - 一个表示目录路径,另一个表示文件路径 - 检查文件是否存在于给定目录下(可以是任何级别)的最有效方法是什么。 我首先将两者转换为 对象,并比较它们的规范路径 但我不相信这实际上是最准确的方法——我想依靠系统的考虑,而不是比较字符串。 然后,我尝试将两者都转换为对象,然后递归地调用文件上的

  • 我刚刚将我的项目移植到Maven,但我现在无法让我的代码识别出ResourceBundle应该加载的包的存在,这在以前工作得很好 这是我当前的项目结构: 以前,我只能在mainframe.java内部使用这行代码导入包: 但这已经不起作用了。我尝试将放在它前面,不管有没有,但它根本找不到捆绑包。 mainframe.java是包的一部分,只是为了说明一下,工作路径设置为main上面的两个文件夹,因

  • 给定两个字符串——一个表示目录路径,另一个表示文件路径——检查文件是否存在于给定目录下(可以是任意深度)的最有效方法是什么。 我首先将两者转换为对象,并比较它们的规范路径 但我不相信这实际上是最准确的方法 - 我想依靠系统考虑的内容而不是比较字符串。 然后,我尝试将两者都转换为对象,然后递归地调用文件上的

  • 在以下React应用程序中,有两个路由URLhttp://myapp 正确布线到布局构件。但是,URLhttp://myapp/login 也路由到布局组件,而不是登录。如果我将path=“/login”更改为“/sign”,它将正确路由到登录组件。 React路由器中的“/login”路径将其路由到路由是否有特殊之处?或者我设置这个路由的方式有错误吗?