[React] Radium: Updating Button Styles via Props

In a CSS library like Bootstrap we can set a button‘s style to be "primary" or "secondary" by appending classes. For React components we want to be able to do this via props. Radium enables this by composing styles via an array. This mimicks the cascade of CSS.

Radiumn allows ‘style‘ attr accepts array. Inside array, the larger index style will overwrite the pervious index‘s style.

  <button style={[
    styles.base,
    type===‘primary‘ && styles.primary
  ]}>
    {children}
  </button>

So in the code, styles.primary will overwrite the styles.base:

const styles = {
  base: {
    backgroundColor: ‘#aaa‘,
    border: ‘none‘,
    borderRadius: 4,
    color: ‘#fff‘,
    padding: ‘5px 20px‘,
    ‘:hover‘: {
      backgroundColor: ‘#08f‘
    }
  },
  primary: {
    backgroundColor: ‘#07d‘
  }
}

We can pass a props to the component to tell when should apply styles.primary style:

const { render } = ReactDOM
const rootEl = document.getElementById(‘root‘)

const Button = Radium(({ children, kind }) => (
  <button style={[
    styles.base,
    kind === ‘primary‘ && styles.primary
  ]}>
    {children}
  </button>
))

const styles = {
  base: {
    backgroundColor: ‘#aaa‘,
    border: ‘none‘,
    borderRadius: 4,
    color: ‘#fff‘,
    padding: ‘5px 20px‘,
    ‘:hover‘: {
      backgroundColor: ‘#08f‘
    }
  },
  primary: {
    backgroundColor: ‘#07d‘
  }
}

render(
  <Button kind="primary">
       OK
  </Button>,
rootEl)
时间: 2024-10-29 19:08:36

[React] Radium: Updating Button Styles via Props的相关文章

React Native返回刷新页面(this.props.navigation.goBack())

import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View, Button } from 'react-native'; export default class HomeScreen extends Component { constructor(props){ super(props); } static navigationOptions = { title: '首页', };

React Native 快速入门之认识Props和State

眼下React Native(以后简称RN)越来越火,我也要投入到学习当中.对于一个前端来说,还是有些难度.因为本人觉得这是一个App开发的领域,自然是不同.编写本文的时候,RN的版本为0.21.0.我们马上以代码进入今天的学习. 'use strict'; import React, { AppRegistry, Component, StyleSheet, Text, View } from 'react-native'; class Hello extends Component { re

React Native 一个组件styles BUG

'use strict'; var React = require('react-native'); var { StyleSheet, PanResponder, View, Text } = React; var CIRCLE_SIZE = 40; var PanResponderExample = React.createClass({ componentWillMount: function() { this._panResponder = PanResponder.create({ o

Android 更改按钮样式 Button Styles

extends:http://stackoverflow.com/questions/26346727/android-material-design-button-styles   I will add my answer since I don't use any of the other answers provided. With the Support Library v7, all the styles are actually already defined and ready t

深入浅出 React 的 HOC 以及的 Render Props

重复是不可能的,这辈子都不可能写重复的代码 当然,这句话分分钟都要被产品打脸,天天喊着改需求,老哥,这里改下可好? 所以,我们需要抽象,封装重复的功能或者逻辑,这样改需求,也不用到处改 那么这次我们来讲讲 React 里的高级组件 React 高级组件有两种方式: 使用高阶组件( Higher Order Component ==> HOC ) 子组件作为函数的模式( Render Props ) 高阶组件 首先来说说高阶组件,它不是 React 的提供的 API,它是模式,一种增强组件的模式,

从 0 到 1 实现 React 系列 —— 组件和 state|props

看源码一个痛处是会陷进理不顺主干的困局中,本系列文章在实现一个 (x)react 的同时理顺 React 框架的主干内容(JSX/虚拟DOM/组件/...) 项目地址 组件即函数 在上一篇 JSX 和 Virtual DOM 中,解释了 JSX 渲染到界面的过程并实现了相应代码,代码调用如下所示: import React from 'react' import ReactDOM from 'react-dom' const element = ( <div className="titl

React中的state与props的再理解

props可以看做是 property 的缩写的复数,可以翻译为属性,类似于HTML 标签的自定义属性.在大多数React教程里讲 state 和 props 主要的区别在于 props 是不可变的,而 state 可以根据与用户交互来改变.其实这种说法有问题.可以参考一篇文章<React中state与props介绍与比较> 组件中的props本质作用是一种父级向子级传递数据的方式.props是可以改变的,只是没有提供API可以在子组件里直接修改,我们可以在父组件里把要给子组件的属性值修改.

React中state和props分别是什么?

[转]https://segmentfault.com/a/1190000011184076 整理一下React中关于state和props的知识点. 在任何应用中,数据都是必不可少的.我们需要直接的改变页面上一块的区域来使得视图的刷新,或者间接地改变其他地方的数据.React的数据是自顶向下单向流动的,即从父组件到子组件中,组件的数据存储在props和state中,这两个属性有啥子区别呢? props React的核心思想就是组件化思想,页面会被切分成一些独立的.可复用的组件. 组件从概念上看

【React自制全家桶】四、React中state与props的分析与比较

一.state 1.state的作用 state是React中组件的一个对象.React把用户界面当做是状态机,想象它有不同的状态然后渲染这些状态,可以轻松让用户界面与数据保持一致. React中,更新组件的state,会导致重新渲染用户界面(不要操作DOM).简单来说,就是用户界面会随着state变化而变化. 2.state工作原理 常用的通知React数据变化的方法是调用setState(data,callback).这个方法会合并data到this.state,并重新渲染组件.渲染完成后,