Пользовательский компонент React Native не устанавливает размер компонента динамически

Я пытаюсь создать компонент RN, который отображает твиты. Я разветвлял отличный компонент RN, response-native-fabric-twitterkit и добавил компонент, который отображает твит. Пока все хорошо, но когда я хочу отобразить этот твит внутри ScrollView, я должен указать высоту и ширину компонентов, иначе он не будет отображаться. Есть идеи, что я делаю не так?

Вот мой раздвоенный компонент RN: https://github.com/adamivancza/react-native-fabric-twitterkit

И вот тестовое приложение, которое демонстрирует мою проблему: https://github.com/adamivancza/react-native-twitterkit-test

<View style={styles.container}>
    <ScrollView
      style={{ flex: 1 }}>
      // this component is displayed because I've set a specific height 
      <Tweet
        style={{ flex: 1, height: 200 }}
        tweetId='788105828461006848'/>
      // this component is not displayed
       <Tweet
        style={{ flex: 1 }}
        tweetId='788105828461006848'/>
    </ScrollView>   
</View>

1 ответ

У проблемы github, связанной с @smilledge, есть ответ.

При динамическом добавлении представлений в нативный компонент кажется, что вам нужно вручную запустить цикл макета, чтобы реагировать на изменения. (возможно, связано с реакцией нативного обновления на теневое представление)

 @Override
    public void requestLayout() {
        super.requestLayout();
        post(measureAndLayout);
    }

    private final Runnable measureAndLayout = new Runnable() {
        @Override
        public void run() {
            measure(
                    MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.EXACTLY),
                    MeasureSpec.makeMeasureSpec(getHeight(), MeasureSpec.EXACTLY));
            layout(getLeft(), getTop(), getRight(), getBottom());
        }
    };
Другие вопросы по тегам