我在React面临一些奇怪的事情,我认为可能会这样做,但我不知道如何。
我的目标:更新组件状态的特定属性,该属性可以是嵌套属性。但!我想动态更新它(在一堆输入上使用onChange调用,不想编写30个onChange函数,我想编写一个通用函数)。
有效的示例:
this.state = { value: 0 }
然后:
var attribute = 'value'
var value = 'myvalue'
this.setState({[attribute]:value})
不起作用的示例:
this.state = { nested: { value: 0 } }
然后:
var attribute = 'nested.value'
var value = 'myvalue'
this.setState({[attribute]:value})
我可以拥有尽可能多的嵌套级别。我想找到一种通用且易于处理的方法来处理它。
我创建了一个JSFiddle来重现这个问题,因为我正在尝试使用onchange函数来实现它:http://jsfiddle.net/n61kv6gy/
有没有人有想法?
答案 0 :(得分:2)
如果我理解你的问题,你可以在onChange函数中尝试这样的事情:
class SimpleFactory
{
public function build($model)
{
$obj = __NAMESPACE__ . '\\models\\' . $model . '.php';
if (class_exists($obj)) {
return new $obj();
}
}
}
class Controller
{
private $factory;
public function __construct()
{
$this->factory = new SimpleFactory();
}
public function someMethod()
{
// this method has a dependency
$oneModel = $this->factory->build('oneModel');
}
}
首先克隆您的状态,然后进行更改,最后更新状态。
这是jsfiddle
答案 1 :(得分:0)
OK堆栈溢出注释功能非常缺乏。我在这里回答@Boky:
嗨,非常感谢您的回答。这部分地完成了工作。您如何修改代码以允许我们绑定这3个属性?
{
value1: 1,
nested: {
value2: 2,
nestedAgain: {
value3: 3
}
}
}