在React中设置默认上下文

时间:2016-10-14 23:11:07

标签: reactjs

是否可以为组件定义默认上下文,以便如果父组件没有将上下文传递给子组件,则子组件不会中断?我现在唯一能想到的是

 <form action="list.php" method="post">
 <input type="text" name="names">
 <br>
 <input type="submit" value="Submit">
 <?php

 if(!isset($name)) {$name = '';}
 if(!isset($names)) {$names = '';}
 if(!isset($value)) {$value = '';}
 if(!isset($myarray)) {$myarray = '';}
 $name = filter_input(INPUT_POST, 'name');
 $names = filter_input(INPUT_POST, 'names');
 $myarray = filter_input(INPUT_POST, 'myarray');
 if($myarray === NULL){
$myarray = array();
 }
 $myarray = $names;
 $name = explode(' ', $myarray);
 foreach($name as $value){
 echo ($value)."<br>";
 }
 $myarray = $names;
 $name = explode(' ', $myarray);
 foreach($name as $value){
 echo asort($value)."<br>";
 }
 $myarray = $names;
 $name = explode(' ', $myarray);
 foreach($name as $value){
 echo arsort($value)."<br>";
 }
 ?>

那会有用吗?

1 个答案:

答案 0 :(得分:1)

Context类似于props,除了上下文中的更改实际上不会触发渲染。通常上下文从州或商店获取其价值,因此通常不是问题。另一个缺点是不像道具,React没有提供为它设置默认值的方法。

你可以在react的repo中发出一个功能请求。解决方法是在使用之前为其分配默认值。 e.g:

class MyComponent {
    // use this.getRole to access the role
    getRole() {
        return this.context.role || 'public';
    }
}

编辑:您的代码段不起作用,因为在渲染管道期间父级可能会覆盖上下文值;加上它没有记录直接更新上下文对象时会发生什么。