代码之家  ›  专栏  ›  技术社区  ›  Slim

如何将样式从父组件发送到子组件?

  •  1
  • Slim  · 技术社区  · 7 年前

    我想将样式对象从父组件发送到子组件。 父母亲js:

    const styles = theme => ({
    
      field: {
        flexGrow: 1,
        position: 'relative',
        zIndex: 1,
      },
    });
    
    class Parent extends React.Component {
     render(){
      const {classes } = this.props
      return (
       <div>
        <Child className={classes.field} />
       </div>
      )
    }
    }
    

    小孩js:

    const styles = theme => ({
    
      container: {
        flexGrow: 1,
        position: 'relative',
        zIndex: 2,
      },
    });
    
    class Child extends React.Component {
     render(){
      const {classes} = this.props
      return (
       <div>
        <Child className={classes.field} />
       </div>
      )
    }
    }
    

    这将返回子组件的对象类不包含父组件中包含的样式字段。有没有什么建议可以让父母把款式传给孩子?

    3 回复  |  直到 7 年前
        1
  •  1
  •   Acauã Pitta    7 年前

    你创造了 const.styles 但你在打电话 {classes.field}

    尝试改变 styles classes 或者:

    const { styles } = this.props
    

    通过道具发送给孩子:

     <Child className={styles.field} />
    

    然后

    class Child extends React.Component {
     render(){
      const {styles} = this.props
      return (
       <div>
        <Child className={styles.field} />
       </div>
      )
    }
    

    className 我想买房产不是最好的选择

        2
  •  0
  •   Harkirat Saluja    7 年前

    你可以试试这样:-

    // Parent component 
    class Parent extends React.Component {
     render(){
      return (
       <View>
        <Child customStyle={styles.childStyle} />
       </View>
      )
    }
    }
    
    const styles = StyleSheet.create({
     childStyle: {
       color: "red"
     }
    });
    
    // Child component
    
    class Child extends React.Component {
      render () {
        return (    
        <View>
            <Text style={[this.props.customStyle, styles.text]}></Text>
          </View>
        )
      }
    }
    
    const styles = StyleSheet.create({
      text: {
        fontSize: 14
      }
    });