是否可以在不必创建容器的情况下设置反应组件的样式?
这是我当前问题的一个例子。我总是需要将组件包装在容器/包装器中。像这样......
import React, { Component } from 'react';
import styled from 'styled-components';
const PitchSliderContainer = styled.input`
text-align: right;
float: right;
`;
const PitchSlider = () => <PitchSliderContainer
type="range"
min="0.9"
max="1.1"
step="any"
onChange={this.props.onChange}
/>
export default PitchSlider;
有没有办法在不必创建容器的情况下设计PitchSlider
的样式?
我认为你所做的是正确的方式。因为这是Styled Components的重点。创建可重用的表示组件。在这里,你的PitchSliderContainer
就是这样一种风格的input
组件。您可以编写一个更通用的组件来接受某些道具,并根据道具呈现<input>
。这样的风格组件也应该有一个名字。
您要求的可以用另一种方式完成。这不建议用于结构组件,但由于您的组件只有一个<input>
标签,这应该没问题:
const PitchSlider = ({ className }) => <PitchSliderContainer
type="range"
min="0.9"
max="1.1"
step="any"
onChange={this.props.onChange}
className={className}
/>
export default styled(PitchSlider)`
text-align: right;
float: right;
`;
确保您收到className
作为道具并将其传递给您的组件。
编辑:正如Phil Pluckthun所说,你也可以这样做:
const PitchSlider = styled.input.attrs({
type: 'range',
min: '0.9'
max: '1.1'
step: 'any'
onChange: this.props.onChange
})`
text-align: right;
float: right;
`;