Как сказано в документации, вам нужно поместить ваш div в функцию обратного вызова рендеринга компонента, т.е.
class App extends React.Component {
render() {
console.log("App---->");
return (
{({ style }) => I am sticky}
I am sticky
{/* ... */}
);
}
}
«Обратный вызов рендеринга» в этом случае просто означает, что дочерний элемент компонента
должен быть функцией, которая возвращает то, что должно быть визуализировано. Это позволяет родителю передавать дополнительную информацию для использования при рендеринге потомка через аргументы функции. Синтаксис для указания функции как дочернего элемента:
{/*function goes here*/}
В приведенном выше примере функциональной частью является ({ style }) =>
, который предполагает, что параметр, который будет передан функции, будет объектом с [ 115], а затем функция возвращает элемент div, используя этот стиль.
Если вы посмотрите на код реагирования , то обнаружите, что в его методе render
он делает следующее:
const element = React.cloneElement(
this.props.children({
isSticky: this.state.isSticky,
wasSticky: this.state.wasSticky,
distanceFromTop: this.state.distanceFromTop,
distanceFromBottom: this.state.distanceFromBottom,
calculatedHeight: this.state.calculatedHeight,
style: this.state.style
}),
{
ref: content => {
this.content = ReactDOM.findDOMNode(content);
}
}
);
Когда он вызывает this.props.children(...)
, которая выполняет функцию, указанную вами как дочернюю, и вы можете видеть, что последнее свойство объекта, которое она передает функции, является свойством style
.
SUBSTRING(str_col, PATINDEX('%[^0]%', str_col+'.'), LEN(str_col))
Вместо замены пространства 0 с 'редким' пробельным символом, который не должен обычно быть в тексте столбца. Перевод строки, вероятно, достаточно хорош для столбца как это. Тогда Вы обычно можете LTrim и заменять специальный символ 0 снова.
Почему Вы только не бросаете значение к INTEGER
и затем обратно к VARCHAR
?
SELECT CAST(CAST('000000000' AS INTEGER) AS VARCHAR)
--------
0