2016-12-28 77 views
0

我是React的新手,我想了解以下基本知识:是否可以操作一个作为Props动态传递给组件的值?

是否可以操纵一个作为道具动态传递给组件的值?例如。通过客户端上的控制台?这是否会导致组件的重新渲染?

我知道有可能将值传递给父级的子组件,并且只要父级重新生成,子组件也会与新值一起重新显示。

但你能通过某种方式直接操纵传递的值来实现相同的行为吗? 例如

function Welcome(props) { 
    return <h1>Hello, {props.name}</h1>; 
} 

ReactDOM.render(
    <Welcome name="Sara" />, 
    document.getElementById('root') 
); 

输出是: 你好,萨拉

我想要实现这样的事情,不使用父元素:

function Welcome(props) { 
    return <h1>Hello, {props.name}</h1>; 
} 
var name = "test"; 
ReactDOM.render(
    <Welcome name={name} />, 
    document.getElementById('root') 
); 

输出是: “测试”

现在如果我在控制台中设置名称为name = "X"它不会改变,名称似乎是一个完全不同的变量。

+1

即使您要在控制台中更改该值,组件也不会反映更改(不会被重新呈现)。看一下[React Dev Tools](https://github.com/facebook/react-devtools#installation),它们可以很容易地进行修改。 –

回答

1

要回答你的问题:在控制台中输入变量更改(让我们假设你正在使用chrome dev工具)不会影响你写的reactjs代码。

如果您在加载页面后在控制台级别更改变量,那么原始变量“name”将已经使用指定的值“test”进行渲染。

+0

谢谢,所以我不能以某种方式访问​​组件的对象,并将其作为道具传递给另一个值,并让它重新渲染? – henk

+1

你可以,但不是通过控制台 - 至少就我已经尝试。 编辑:为了澄清,我说你可以在你的代码中建立更改。即具有按钮,当按下该按钮时,将作为文本传递给组件的变量改变。这样,当你按下按钮时,渲染后的变量将被改变,并且确实会强制重新渲染:) – Teedub

相关问题