小编K.W*_*.Wu的帖子

如何在React Native中更新FlatList中的单个项目?

注意:我在那里发布了一个答案,我个人认为这是迄今为止最好的解决方案.虽然它不是最高级别的答案,但根据我得到的结果,它非常有效.

--------------------------------------------- 原始问题 --- -------------------------------------------------- -

假设我正在写一个Twitter克隆,但更简单.我将每个项目放在FlatList中并渲染它们.

为了"喜欢"一个帖子,我按下帖子上的"喜欢"按钮,"喜欢"按钮变成红色,我再次按下它,它变成灰色.

这就是我到目前为止:我存储了所有加载的帖子this.state,每个帖子都有一个名为"likes"的属性,它是boolean,表示该用户是否喜欢这个帖子,当用户按下"喜欢"时,我去了以state.posts和更新liked该职位的性质,然后利用this.setState更新的帖子,像这样:

// 1. FlatList
<FlatList
    ...
    data={this.state.posts}
    renderItem={this.renderPost}
    ...
/> 

// 2. renderPost
renderPost({ item, index }) {
    return (
        <View style={someStyle}>
            ... // display other properties of the post
            // Then display the "like" button
            <Icon
                name='favorite'
                size={25}
                color={item.liked ? 'red' : 'gray'}
                containerStyle={someStyle}
                iconStyle={someStyle}
                onPress={() => this.onLikePost({ item, index })}
            />
            ...
        </View>
    );
}

// 3. onLikePost
likePost({ item, index …
Run Code Online (Sandbox Code Playgroud)

react-native

19
推荐指数
3
解决办法
2万
查看次数

如何根据字符串大小在UITableViewCell中动态设置UITextView的高度?

我知道这个问题已在这里被提出,但它没有解决我的问题,因为接受的答案中的链接已关闭,最小的例子没有帮助.

这是我的自定义UITableViewCell及其所有约束的图片:

在此输入图像描述

每个帖子都包含这些UI元素.唯一可以使每个单元格的高度不同的元素是messageView,因为它的高度取决于显示的字符串.问题是,如何动态设置每个单元格的高度?这是我现在拥有的(不工作,messageView根本没有显示):

func cellForRowAt(indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(...) as! PostCell

    let message = ...
    cell.messageView.text = message

    return cell
}

func heightForRowAt(indexPath: IndexPath) -> CGFloat {
    var cellMinimumHeight: CGFloat = 120
    if let cell = tableView.cellForRow(at: indexPath) as? PostCell {
        let size = cell.messageView.sizeThatFits(cell.messageView.frame.size)
        cellMinimumHeight += size.height
    }

    return cellMinimumHeight
}
Run Code Online (Sandbox Code Playgroud)

heightForRowAt功能中,if没有被执行,因此,所有单元格的高度都是cellMinimumHeight = 120.

我怎么能让每个单元格的高度= 120 + messageView的高度?

---------------------------------编辑1 --------------- ------------------

在图片中犯了一个错误,messageView …

uitableview ios swift

7
推荐指数
1
解决办法
284
查看次数

在本机反应中,如何将 base64 图像转换为 jpg 然后保存到临时路径?

在 中react-native,将图像转换为BASE64格式很容易,在 的帮助下react-native-fetch-blob,我只需执行以下操作:

RNFetchBlob.fs.readFile(filePath, 'base64')
    .then((data) => console.log(data));
Run Code Online (Sandbox Code Playgroud)

但是,反过来呢?我知道有一些软件包可以做到这一点,但我想知道是否可以仅使用react-native-fetch-blobreact-native-fs?

我想要的是在将BASE64图像转换并保存到文件后,我可以像这样显示它:

<Image
    source={{ uri: <path/to/converted/image> }}
    style={{ ... }}
/>
Run Code Online (Sandbox Code Playgroud)

javascript base64 image reactjs react-native

6
推荐指数
1
解决办法
6276
查看次数

如何使用 ElasticSearch 和 Firebase 解决“错误:连接 ECONNREFUSED 127.0.0.1:9200”?

我知道这个问题已经被问过好几次了,但这些解决方案并不适用于我的情况。我已经开始ElasticSearchKibana使用这两个命令:

bin/elasticsearch
bin/kibana
Run Code Online (Sandbox Code Playgroud)

并且服务器运行良好,使用浏览器转到 时http://localhost:9200,得到以下结果:

{
    "name" : "vg7RnLh",
    "cluster_name" : "elasticsearch",
    "cluster_uuid" : "gqDf0H67TxGZGYigAlu2mQ",
    "version" : {
        "number" : "6.1.2",
        "build_hash" : "5b1fea5",
        "build_date" : "2018-01-10T02:35:59.208Z",
        "build_snapshot" : false,
        "lucene_version" : "7.1.0",
        "minimum_wire_compatibility_version" : "5.6.0",
        "minimum_index_compatibility_version" : "5.0.0"
    },
    "tagline" : "You Know, for Search"
}
Run Code Online (Sandbox Code Playgroud)

使用时kibana,一切正常。下面是我写的firebase cloud函数,如果有什么不对的地方,我想是这里:

exports.downloadUserInfo = functions.https.onRequest((req, res) => {
    const { uid } = req.query;

    const searchConfig = {
        uri: 'http://localhost:9200/users/user/' + uid,
        method: 'GET'
    }; …
Run Code Online (Sandbox Code Playgroud)

javascript elasticsearch firebase google-cloud-functions

5
推荐指数
1
解决办法
7098
查看次数

反应原生动画不流畅

我在 a 上面写了一个粘性标题FlatList,我有我想要的,看下面的图片,但是有两个问题。我想要的效果是:

  1. 首先图片的高度是170

  2. 当用户向上滚动时,图片也会向上滚动

  3. 但是当用户滚动 100 时,图片停止向上并停留在那里(意味着显示图片的底部 70)

  4. 同时,当用户滚动时,不透明度从 1 减少到最小值 0.5

代码在GIF下面

在此输入图像描述

const { width: SCREEN_WIDTH } = Dimensions.get('window');

const AnimatedFlatList = Animated.createAnimatedComponent(FlatList);

const FULL_HEADER_HEIGHT = 170;
const DEFAULT_HEADER_HEIGHT = 70;
const HEADER_DIFF = FULL_HEADER_HEIGHT - DEFAULT_HEADER_HEIGHT;

class TestScreen extends Component {
    constructor(props) {
        super(props);

        this.state = {
            data: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
        };

        this.scrollY = new Animated.Value(0);    // How many pixels scrolled

        this.headerOpacity = this.scrollY.interpolate({
            inputRange: [0, HEADER_DIFF, HEADER_DIFF …
Run Code Online (Sandbox Code Playgroud)

animation reactjs react-native

5
推荐指数
1
解决办法
6819
查看次数

在将PHAsset转换为UIImage时获得非致命但意外的错误

我使用此代码将a转换PHAsset为完整大小UIImage:

func getOriginalAsset(asset: PHAsset, onComplete: @escaping (UIImage?, [AnyHashable: Any]?) -> ()) {
    let manager = PHImageManager.default()
    let option = PHImageRequestOptions()
    option.isNetworkAccessAllowed = true

    manager.requestImage(for: asset, targetSize: PHImageManagerMaximumSize, contentMode: .aspectFit, options: option) { (image, info) in
        onComplete(image, info)
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,每次我尝试运行此代码时,我都会从控制台收到此警告:

[ImageManager] First stage of an opportunistic image request returned a non-table format image, this is not fatal, but it is unexpected
Run Code Online (Sandbox Code Playgroud)

  1. 为什么我会收到此警告?

  2. 我该如何解决这个问题?

更新

尽管有警告,我运行此代码时一切正常.我无法忍受我的应用程序中的任何警告/错误(也许我迟早要学会接受它)

ios swift

5
推荐指数
1
解决办法
1544
查看次数

是否可以访问另一个目标中的类而不在 Xcode 中导入该目标?

在我的测试项目中,我创建了 2 个目标,如下所示:

步骤1:

在此输入图像描述

第2步:

在此输入图像描述

步骤3:

在此输入图像描述

之后,我TestClass1.swift在“TestTarget1”和TestClass2.swift“TestTarget2”中创建:

// TestClass1
public TestClass1 {
    public static var randomNumber: Int {
        return Int.random(in: 1...100)
    }
}
Run Code Online (Sandbox Code Playgroud)

在 中TestClass2,我希望访问随机数生成器,而TestClass1无需导入目标“TestTarget1”,这可行吗?例如,通过链接库、框架等。

您可能会想,“为什么不想导入它?” 这很难解释,我相信你并不关心,我只是想知道这是否可行。谢谢你!

xcode swift

4
推荐指数
1
解决办法
2000
查看次数

xv6 中的 PGROUNDUP 和 PGROUNDDOWN 是什么意思?

在 xv6mmu.h文件中,有这 2 行代码

    #define PGROUNDUP(sz)  (((sz)+PGSIZE-1) & ~(PGSIZE-1))
    #define PGROUNDDOWN(a) (((a)) & ~(PGSIZE-1))
Run Code Online (Sandbox Code Playgroud)

他们在做什么?

c operating-system xv6

3
推荐指数
1
解决办法
2524
查看次数

如何检查用户是否已登录,使用Firebase进行本机响应?

到目前为止,这就是我使用redux全局维护登录状态的原因。在我的登录屏幕中,我正在使用动作创建者来登录用户,就像这样...

    // In LoginScreen file
    onLogin = () => {
      this.props.accountLogin({ email, password });
    }
Run Code Online (Sandbox Code Playgroud)

并在动作文件accountLogin中定义为:

    // In auth_action file
    export const accountLogin = ({ email, password }) => {
      firebase.auth().signInWithEmailAndPassword(email, password)
        .then(user => {
          dispatch({ type: LOGIN_SUCCESS, payload: user })});
      });
    };
Run Code Online (Sandbox Code Playgroud)

然后,在reduce文件中,大小写LOGIN_SUCCESS是这样处理的...

    // In auth_reducer file
    const INITIAL_STATE = {
      // ... Other stuff
      user: null
    };
    export default function (state = INITIAL_STATE, action) {
      // ... Other cases
      // Login Successful case
      case …
Run Code Online (Sandbox Code Playgroud)

react-native redux react-redux

2
推荐指数
1
解决办法
4972
查看次数

通过React Native和Redux实现``像推文''功能的更好方法

假设我正在编写一个Twitter克隆,但要简单得多。这是一张“帖子”的图片

在此处输入图片说明

在帖子的底部,有一个我称之为的Social Bar东西,其中包含3个按钮commentmessagelike按钮。comment按钮可让用户对帖子发表评论,message按钮可让用户向帖子所有者发送消息,like按钮可让用户“喜欢”帖子。按下like按钮时,按钮的颜色将变为红色,再次按下将使其变为灰色。

我至今是,我做Social Bar一个纯粹的成分,它有它自己statecommentCountlikedlikeCountliked表示该用户是否喜欢这个职位之前,如果是这样,liked= TRUE,因此,颜色like按钮,最初将红,在按下按钮,likedlikeCount特性将相应改变)。

我的问题是,当用户按下帖子时,我会将他们带到另一个页面,他们可以在其中查看帖子中的评论,如下所示: 在此处输入图片说明

您可以在此Post Content页面中看到,用户也可以“喜欢”该帖子。如果用户决定“喜欢”该帖子(like按钮将为红色),则like第一张图片中的按钮也应进行更新。我应该如何实施呢?目前,我正在使用redux,只要我“喜欢”帖子,就将帖子的“广播” postId到every Social Bar,如果id匹配,则更新like按钮。是的,它可以工作,但是,每当我按下like按钮时,颜色更改大约需要1秒钟。我想要的是按钮立即更改,例如Twitter和Facebook。我怎么做?

react-native redux

2
推荐指数
1
解决办法
2051
查看次数