如果内部有逻辑运算符的js注入,将作为参数呈现/发送到ReactDOM.render()的内容

时间:2017-10-02 16:22:45

标签: javascript reactjs jsx

所以,这是代码

import React from 'react';
import ReactDOM from 'react-dom';

// judgmental will be true half the time.
const judgmental = Math.random() < 0.5;

const favoriteFoods = (
  <div>
    <h1>My Favorite Foods</h1>
    <ul>
      {<li>Sushi Burrito</li>}
      <li>Rhubarb Pie</li>
      {burp && <li>Not Decent</li>}
      <li>Broiled Grapefruit</li>
    </ul>
  </div>
);

ReactDOM.render(
    favoriteFoods, 
    document.getElementById('app')
);

当burp为ReactDOM.render时,我和我的朋友对于将false作为参数发送到false的确切内容有不同的看法。

这是我的:如果JS注入里面,当burp为false时,逻辑运算符应该像const favoriteFoods = ( <div> <h1>My Favorite Foods</h1> <ul> {<li>Sushi Burrito</li>} <li>Rhubarb Pie</li> {burp} //burp is a false, not even a JSX element <li>Broiled Grapefruit</li> </ul> </div> ); 那样返回burp,这样JSX看起来就像

ReactDOM.render

这将发送到{burp},并且未呈现的原因是{false}中的false不是JSX,因此不会在屏幕上显示。

然而,我的朋友以这种方式看待它:代码部分未运行的原因是我在这里引用

  

双方必须为了运行

的代码

因为整个逻辑运算符撤离 const favoriteFoods = ( <div> <h1>My Favorite Foods</h1> <ul> {<li>Sushi Burrito</li>} <li>Rhubarb Pie</li> //nada, this code evacated false so it will not run at all. <li>Broiled Grapefruit</li> </ul> </div> ); 因此这部分代码无效。他认为这是一个布尔计算。 JSX就像

{burp && <li>Not Decent</li>}

这将被发送到ReactDOM.render并且它未呈现的原因是data = tf.get_variable("myvar1", shape=[4, 3], dtype=tf.float64) mu = tf.get_variable("mu", initializer=tf.constant(np.arange(2*3).reshape(2, 3), dtype=tf.float64)) centered_data = data - tf.expand_dims(mu, axis=1) with tf.Session() as sess: sess.run(tf.global_variables_initializer()) ans_value, centered_data_value, mu_value = sess.run([centered_data, data, mu], {data: np.arange(4 * 3).reshape(4, 3)}) print("centered_data_value: ", centered_data_value) print("mu: ", mu_value) print("ans: ", ans_value) 撤离到假,此代码将不会运行,因此,不会在屏幕上显示。

我相信我是对的但是因为他是职业选手而我两小时前就开始学习JSX了。有人帮忙!

2 个答案:

答案 0 :(得分:2)

您的解释基本上是正确的。这是技术解释的一个很好的参考。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators

答案 1 :(得分:1)

你是对的。来自React docs on conditional rendering

  

...在JavaScript中,true && expression始终评估为expressionfalse && expression始终评估为false

     

因此,如果条件为true,则&&之后的元素将出现在输出中。 如果是false,则React会忽略并跳过它

来自React docs on JSX

  

falsenullundefinedtrue是有效的孩子。他们根本就不渲染。