react条件判断、行内样式style、动态绑定className、循环生成节点、数据监听useEffect

举报
国服第二切图仔 发表于 2023/02/25 21:35:06 2023/02/25
【摘要】 ​ 今天接手一个react项目维护,往里面加一点功能,这里把react常见语法总结记录一下1、react条件判断生成节点<div> {this.state.switch ? <div>开启</div> : <div>关闭</div>}</div>2、react行内样式style及动态绑定style// App.js const App = () => { const stylesObj ...

 今天接手一个react项目维护,往里面加一点功能,这里把react常见语法总结记录一下

1、react条件判断生成节点

<div>
  {this.state.switch ? <div>开启</div> : <div>关闭</div>}
</div>

2、react行内样式style及动态绑定style

// App.js
 
const App = () => {
  const stylesObj = {
    backgroundColor: 'lime',
    color: 'white',
  };
 
  const elementWidth = 150;
 
  return (
    <div>
      {/* 👇️ set inline styles directly */}
   {/* 👇️ 直接设置行内样式 */}
      <div style={{backgroundColor: 'salmon', color: 'white'}}>
        Some content
      </div>
 
      <br />
 
      {/* 👇️ set inline styles using an object variable */}
      {/* 👇️ 使用对象变量设置行内样式 */}
      <div style={stylesObj}>Some content</div>
 
      <br />
 
      {/* 👇️ set inline styles conditionally using a ternary */}
      {/* 👇️ 使用三元运算符设置行内样式 */}
      <div
        style={{
          backgroundColor: 'hi'.length === 2 ? 'violet' : 'mediumblue',
          color: 'hi'.length === 2 ? 'white' : 'mediumpurple',
        }}
      >
        Some content
      </div>
 
      <br />
 
      {/* 👇️ set inline styles interpolating a variable into a string */}
      {/* 👇️ 在字符串中插入变量,来设置行内样式 */
      <div
        style={{
          width: `${elementWidth}px`,
          backgroundColor: 'salmon',
          color: 'white',
        }}
      >
        Some content
      </div>
    </div>
  );
};
 
export default App;

3、react 动态绑定class

1. 直接动态绑定,没有判断条件的
<i className={["iconfont "+" "+item.icon]} ></i>复制代码
2.有判断条件的(注意iconfont后加了空格,样式区分)
<i className={["iconfont ",isRed ?item.icon :'' ].join('')} ></i>复制代码
3.使用ES6 模板字符串
<i className={`iconfont ${isRed ?item.icon :'' }`} ></i>复制代码

4、react循环生成节点

map循环
render() {
  return (
    <div>
      {this.state.lists.map((item) => (
        <div key={item}>{item}</div>
      ))}
    </div>
  )
}

foreach 循环
render() {
  const elements = [];
  this.state.lists.forEach(item => {elements.push(<div key={item}>{item}</div>)})
  
  return (
    <div>
      { elements }
    </div>
  )
}


5、react数据监听

如果想只在某个state发生改变的时候才被调用可以传递依赖项。
初始化和具体state更新的时候被调用
这个依赖count的useEffect会在组件初始化和仅count发生变化的时候被调用。
这个类似vue里面的immediate watch。

useEffect(() => {
  console.log("依赖count", count);
}, [count]);


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。