Вы должны вдохновиться тем, что предлагается в документации в разделе Advanced
здесь: https://react-select.com/advanced .
Я воссоздал живой пример в CodeSandbox, чтобы вы могли увидеть его в действии и поиграть с ним. Но основная идея заключается в том, чтобы встроить оригинальный элемент Select
в некоторый контролируемый элемент, и они редактируют стиль вашего Select
, чтобы он выглядел как единый MenuList
.
class PopoutExample extends Component<*, State> {
state = { isOpen: false, value: undefined };
toggleOpen = () => {
this.setState(state => ({ isOpen: !state.isOpen }));
};
onSelectChange = value => {
this.toggleOpen();
this.setState({ value });
};
render() {
const { isOpen, value } = this.state;
return (
}
onClick={this.toggleOpen}
isSelected={isOpen}
>
{value ? `State: ${value.label}` : "Select a State"}
}
>
);
}
}
// styled components
const Menu = props => {
const shadow = "hsla(218, 50%, 10%, 0.1)";
return (
);
};
const Blanket = props => (
);
const Dropdown = ({ children, isOpen, target, onClose }) => (
{target}
{isOpen ? : null}
{isOpen ? : null}
);
const Svg = p => (
);
const DropdownIndicator = () => (
);
const ChevronDown = () => (
);
Considering the String
class' length
method returns an int
, the maximum length that would be returned by the method would be Integer.MAX_VALUE
, which is 2^31 - 1
(or approximately 2 billion.)
In terms of lengths and indexing of arrays, (such as char[]
, which is probably the way the internal data representation is implemented for String
s), Chapter 10: Arrays of The Java Language Specification, Java SE 7 Edition says the following:
The variables contained in an array have no names; instead they are referenced by array access expressions that use nonnegative integer index values. These variables are called the components of the array. If an array имеет
n
компонентов, мы говоримn
является длина массива; компоненты на массив ссылаются, используя целое число индексы от0
доn - 1
включительно.
Кроме того, индексирование должно быть по значениям int
, как указано в Раздел 10.4 :
Массивы должны быть проиндексированы значениями
int
;
Следовательно, похоже, что предел действительно равен 2 ^ 31 - 1
, так как это максимальное значение для неотрицательного значения int
.
Однако, вероятно, будут другие ограничения, такие как максимальный выделяемый размер для массива.
Поскольку массивы должны индексироваться целыми числами, максимальная длина массива составляет Integer.MAX_INT
(2 31 -1 или 2 147 483 647). Конечно, это предполагает, что у вас достаточно памяти для хранения массива такого размера.
по-видимому, он связан с int, который равен 0x7FFFFFFF (2147483647).