Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应内联样式,从状态应用样式_Javascript_Reactjs - Fatal编程技术网

Javascript 反应内联样式,从状态应用样式

Javascript 反应内联样式,从状态应用样式,javascript,reactjs,Javascript,Reactjs,使用npm-inline-css模块,我试图更改某些页面元素的颜色,将样式存储在一个状态中。我在这里设置状态: setHeaderStyle: function(data){ var headerStyles = this.state.defaultStyles; if(data) { headerStyles.backgroundColor = data.first_colour; headerStyles.color = data.theme

使用
npm-inline-css
模块,我试图更改某些页面元素的颜色,将样式存储在一个状态中。我在这里设置状态:

setHeaderStyle: function(data){
    var headerStyles = this.state.defaultStyles;

    if(data) {
        headerStyles.backgroundColor = data.first_colour;
        headerStyles.color = data.theme;
    }
    this.setState({
        branding: data,
        headerStyles: headerStyles
    });
   },
然后我尝试将样式应用于组件:

  render: function (){
    return (
        <div className="our-schools-app">
          <InlineCss stylesheet="
            & .button {
                color: {{this.state.color}};
            }
            " />
            <RouteHandler />  
        </div>
    );
}
render:function(){
返回(
);
}
但它们的输出如下所示。如何设置内联样式?还是一个更好的方法

<style scoped="" data-reactid=".0.0.1">#InlineCss-0 .button { color:     {{this.state.color
}

}
; 
}
</style>
#InlineCss-0.按钮{color:{{{this.state.color
}
}
; 
}
来自:

在React中,内联样式未指定为字符串。相反,它们是用一个对象指定的,该对象的键是样式名称的camelCased版本,其值是样式的值,通常是字符串

看起来您最有可能尝试为RouteHandler中呈现的组件中存在的按钮设置样式

如果是这种情况,那么创建一个包装器对您来说是最有意义的,它包装了其他组件并接受您试图设置的样式

例如:

var PageWrapper = React.createClass({
  setHeaderStyle: function(data){
    var headerStyles = this.state.defaultStyles;
    if(data) {
      headerStyles.backgroundColor = data.first_colour;
      headerStyles.color = data.theme;
    }
    this.setState({
      branding: data,
      headerStyles: headerStyles
    });
  },
  render: function () {
    var buttonStyle = {
      color: this.state.color
    }
    return (
        <RouteHandler buttonStyle={buttonStyle} />
    );
  }
});

var Index = React.createClass({
  render: function () {
    return (
        <div>
            <RouteHandler />
        </div>
    );
  }
});

var Signup = React.createClass({
  render: function() {
    return (
      <div>
        <p> Click below to signup now! </p>
        <button style={this.props.buttonStyle}>Click Me!</button>
      </div>
    );
  }
});

var Contact = React.createClass({
  render: function() {
    return (
      <div>
        <p> Click the button below to contact us </p>
        <button style={this.props.buttonStyle}>Email Us!</button>
      </div>
    );
  }
});

var routes = (
  <Route path="/" handler={Index}>
    <Route path="page" handler={PageWrapper}>
      <Route path="signup" handler={Signup} />
      <Route path="contact" handler={Contact} />
    </Route>
  </Route>
);

ReactRouter.run(routes, function (Handler) {
  React.render(<Handler/>, document.body);
});
var PageWrapper=React.createClass({
setHeaderStyle:函数(数据){
var headerStyles=this.state.defaultStyles;
如果(数据){
headerStyles.backgroundColor=数据。第一种颜色;
headerStyles.color=data.theme;
}
这是我的国家({
品牌:数据,
headerStyles:headerStyles
});
},
渲染:函数(){
var按钮样式={
颜色:this.state.color
}
返回(
);
}
});
var Index=React.createClass({
渲染:函数(){
返回(
);
}
});
var Signup=React.createClass({
render:function(){
返回(
点击下面注册

点击我! ); } }); var Contact=React.createClass({ render:function(){ 返回( 单击下面的按钮与我们联系

给我们发电子邮件! ); } }); 变量路由=( ); ReactRouter.run(路由、函数(处理程序){ React.render(,document.body); });
编辑:根据您的请求,作为显示嵌套路由如何工作的示例,我添加了一个注册和联系组件。如果您查看routes变量,您可以看到我是如何将这些组件嵌套在PageWrapper下的


现在,嵌套路由
/#/page/signup
/#/page/contact
都可以访问添加到PageWrapper的
中的道具。希望这有帮助

看起来您正试图更改具有“button”类的DOM元素的样式,但没有在此组件中呈现该元素。在这个组件中呈现DOM元素不是更有意义吗?另外,如果你能发布你的路由也会很有帮助。谢谢你的回答,我该如何布局我的嵌套路由?嘿,刚刚添加了嵌套路由的示例。抱歉耽搁了,我在度假!