当前位置: 首页 > 知识库问答 >
问题:

反应:如何从函数组件中的render()方法执行条件检查?

白禄
2023-03-14

在我的普通React类组件中,在返回条件html呈现之前,我在render()方法中做了一些检查。现在,我正在使用一个react函数组件,它显然没有render()方法。。。我如何在这里进行条件检查?就在普通函数中,然后从这些函数返回html代码?

e、 g类组件:

render() {
let test;
if (this.state.test ===true) {
    test = (
    <p>This is a test</p>
    )
}

return(
    {test}
)
}

功能组件中?:

        return (            
            <p >
                {checkIcon()} //normal Javascript functions?
            </p>
        )

共有2个答案

吴浩皛
2023-03-14

您可以将functional component视为类组件的一种呈现方法,在该方法中,您可以执行与在render中完全相同的操作,只是您将从参数而不是this接收道具,并且类似地,除非您使用钩子,否则您将没有状态。因此,您将通过test作为功能组件的道具

const MyComponent = ({test}) =>{

    let value;
    if (test ===true) {
        test = (
        <p>This is a test</p>
        )
    }

    return(
        {value}
    )

}

闻人河
2023-03-14

正如其他人所说,您可以在渲染函数内执行任何操作,与使用类组件执行的操作相同。您可以将函数组件视为类组件的呈现函数。。。

顺便说一句,功能组件不应该包含那么多业务逻辑,最好用HOC和功能组合来增强它们。

您可能想看看recompose,我的示例从中获得了灵感。(更改test属性并按RunCodeSnippet)

// First create a Generic HOC that embedds the branching logic for you.
const branch = (predicate, LeftComponent) => RightComponent => props => (
  predicate(props) ? <LeftComponent {...props} /> : <RightComponent {...props} />
);

// Leave your view component the only job of displaying data to the screen. Avoid any control flow.
const Test = () => 'this is a test component';
const Value = ({ value }) => <div>The Value is {value}</div>;

// Create a final component that branches accordingly with the needed check (if props.test is true)
const Component = branch(
  props => props.test,
  Test
)(Value);


ReactDOM.render(
  <Component test={true} value="£100" />,
  document.getElementById('container')
);
<script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>

<div id="container"></div>
 类似资料:
  • 问题内容: 是否有将功能放置在react组件中的偏好?我仍在学习反应,因此只想找出最佳做法。 问题答案: 每次渲染都会在render方法中创建一个函数,这会对性能造成轻微的影响。如果将它们放入渲染中也很麻烦,这是一个更大的原因,您不必滚动渲染中的代码即可查看html输出。始终将它们放在课堂上。 对于无状态组件,最好将函数保留在main函数之外,而传递props,否则该函数也会在每个渲染器中创建。我

  • 问题内容: 我想知道它是否是反模式,或者是否以某种方式影响组件,例如: 问题答案: 我认为一般来说,人们避免在render中定义函数,但是根据这篇博客文章,这并不是一个坏习惯。该博客文章重点介绍了在render中定义的内联事件处理函数,但我想它适用于render中定义的任何函数。在渲染器中定义函数意味着每次调用渲染器时都要重新定义它们的开销,但这可能不会因组件而导致明显的性能差异。 对于您给出的特

  • 问题内容: 我试图更好地掌握numpy数组,所以我有一个关于它们的示例问题: 假设我有一个名为a的numpy数组。我想对进行操作,使其中的所有小于0的值递增,其余的保持不变。例如,如果我有: 我想返回: 最紧凑的语法是什么? 谢谢! 问题答案:

  • 我目前正在使用kotlin quarkus和mutiny构建一个反应式应用程序,作为反应式编程的新手,我想知道处理以下工作流的最佳方式是什么: 尝试在数据库中查找项目(dynamodb) 如果存在,则向调用者返回一个指示此的值 如果不存在,请调用保存服务 致电外部服务获取一些数据 使用来自外部服务的数据更新数据库中的项目 返回一个值,指示已创建对象 以下是我目前的代码: 此方法最终将由resten

  • 我目前正在尝试一个项目,包括创建银行账户系统。该系统允许您创建一个新的银行账户,您可以在其中说明该账户的归属、余额等。 其中一种方法是能够从账户中提取资金。除此之外,您还可以检查帐户是否透支。 对于方法,我必须满足几个条件。这些是以下: 该值必须高于0.0,这意味着低于0的提款不会发生。 余额不得低于0.0,除非账户透支 目前,我已经能够做到这一点,所以如果金额低于0.0,该方法将返回false。

  • 问题内容: 随着React 中钩子的引入,现在的主要困惑是何时将函数组件与钩子和类组件一起使用,因为在钩子的帮助下,甚至可以在函数组件中获得和部分使用。所以,我有以下问题 钩子的真正优点是什么? 何时使用带有钩子的函数组件和类组件? 例如,带有钩子的功能组件不能像类组件那样帮助性能。他们没有执行就不能跳过重新渲染。还有其他原因吗? 提前致谢。 问题答案: 引入和其他特性(例如和)的思想是帮助减少必